C++中运算符重载需要注意什么?
2012-12-05 21:52
218 查看
c++ - Operator overloading - Stack Overflow这篇FAQ讲的很清楚,把要点整理如下:
以下operator不能重载:.,::,sizeof,?:
其余的都能重载,分别是:
算数运算符:二元:+ - * / % += -= *= /= %=,一元:+ - ++ --
位运算符:二元 & | ^ << >> and &= |= ^= <<= >>= ;一元 ~
布尔运算符:二元:== != < > <= >= || &&, 一元!
地址管理:new new[] delete delete[]
显示转换运算符
其它:二元:= [] ->,一元:* &,函数调用: ()
永远坚持operator众所周知的语意
永远提供相关的运算符重载,比如重载了+,就要重载+=
如果需要修改左操作数,通常实现在非成员,比如<<和>>。
对于别的,遵守下面的规则:
如果是一元运算符,成员
如果二元运算符,左右操作数对等,非成员
如果二元运算符,左右操作数不对等,成员
C++中operator重载的基本语意:
只能重载用户定义类型的operator。以下operator不能重载:.,::,sizeof,?:
其余的都能重载,分别是:
算数运算符:二元:+ - * / % += -= *= /= %=,一元:+ - ++ --
位运算符:二元 & | ^ << >> and &= |= ^= <<= >>= ;一元 ~
布尔运算符:二元:== != < > <= >= || &&, 一元!
地址管理:new new[] delete delete[]
显示转换运算符
其它:二元:= [] ->,一元:* &,函数调用: ()
三个基本原则:
如果operator的含义模糊不清,就不要重载,用一个函数名清楚的函数替代永远坚持operator众所周知的语意
永远提供相关的运算符重载,比如重载了+,就要重载+=
运算符实现成员还是非成员
赋值运算符=,数组下标运算符[],成员访问运算符->和函数调用运算符()必须是成员内的。如果需要修改左操作数,通常实现在非成员,比如<<和>>。
对于别的,遵守下面的规则:
如果是一元运算符,成员
如果二元运算符,左右操作数对等,非成员
如果二元运算符,左右操作数不对等,成员
相关文章推荐
- c++中const与函数一起用的时候需要注意什么?
- C++中使用转换构造函数和运算符重载时需要注意的问题
- C++开发即时通讯软件,需要注意什么?
- 您需要注意的c++ 的11个要点
- 创业起步阶段需要注意什么?
- 关于Object中的equals方法重写需要注意什么
- c/c++指针精讲和需要注意的地方
- 我们需要注意什么?
- C++需要注意点
- 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)
- c++在头文件中定义全局变量时需要注意的地方
- 离职需要注意些什么问题
- 网站推广优化需要注意什么
- 数据从MySQL迁移到Oracle 需要注意什么
- c#程序调用c++编写dll需要注意问题
- c++下memcpy()、memset()、memcmp()需要注意的
- java学习要点(除C++特性外需要注意的特性)
- C++ 一些需要注意的细节
- 你最需要注意的11条要点for C++
- 在衡量MPLS性能时需要注意什么