浅度解析 C++操作符重载
作者:周继光
目录
序.............................................................................................................................................................................................................1
1.概述......................................................................................................................................................................................................1
2.可重载的操作符.................................................................................................................................................................................2
(1).可以重载的操作符:..............................................................................................................................................................2
(2).不能重载的操作符...................................................................................................................................................................2
3. 正确的方法........................................................................................................................................................................................2
(1)一元操作符................................................................................................................................................................................3
注意条款 1:不改变类属性的方法,声明为 const。........................................................................................................3
注意条款 2:必须返回一个对象时,就返回一个 const 对象。.......................................................................................3
(2)“++”“--”操作符的重载.............................................................................................................................................................4
注意条款 3:如果改变了类的属性,就必须返回*this 的引用。....................................................................................5
注意条款 4:后缀++、—必须返回一个 const 对象。......................................................................................................5
注意条款 5:后缀++、—应该用前缀++、—实现。........................................................................................................5
(3)二元操作符................................................................................................................................................................................5
注意条款 6:二元操作符一般重载为非成员,如果公共接口不能满足访问类属性的需要,就重载为类的友元。5
注意条款 7:“ +”等操作符应该用“+=”等操作符来实现。............................................................................................6
注意条款 8:赋值操作符“=”必须重载为成员,必须返回*this 的引用,派生类必须为基类成员赋值,为了效率
应该检查自赋值的情况。....................................................................................................................................................7
注意条款 9:重载的关系运算中不会发生隐式类型转换,所有需要的类型都要分别对左操作数和右操作数重载 。
................................................................................................................................................................................................7
(3)其它操作符重载........................................................................................................................................................................9
注意条款 10:下标操作符[]必须重载为成员,必须进行越界处理,并且同时提供 const 版本与非 const 版本。...9
注意条款 11:operator new 和 operator delete、operator new[]和 operator delete[]要成对重载。.................................9
序
踏入 C++的世界已经两年了,但一直在黑夜中前行,最近看到了由 Lostmouse 译的 Scott Meyers