参数和返回值
- operator= 需要自赋值检测
- 返回值优化
不常用的运算符
- 下标运算符operator[ ],必须是成员函数
- new 和 delete也是运算符,也可以重载
- 逗号运算符operator, 有在对象前和在对象后两个版本。似乎没有什么实际用途
- operator->重载后可以让对象更加灵活,常被称为灵巧指针或智能指针(smart pointer),例如迭代器,通常与容器类配合使用
- 迭代器可以设计为嵌套类写在容器类中,C++标准库中的容器基本上都是这样设计
- operator->*运算符是内部数据类型成员访问运算符,例如访问成员函数。实际上重载后应该返回一个对象,该对象支持()运算符,之后就能够类似于(A->*pt)(...)来模仿函数使用了。
- =()[]->->*等都必须是成员运算符,.和.*是不能重载的运算符
- operator=要防止自赋值问题。同时结合拷贝构造函数可以实现引用计数,并且利用写拷贝技术避免大量的初始化内存开销。
- 编译器自动创建的operator=操作符会调用成员的每一个operator= 操作,类似于拷贝构造函数的自动生成。
- 自动类型转换可以是通过构造函数实现、也可以通过重载运算符实现。
- 避免自动类型转换可以在构造函数前使用explicit关键字来定义
- 当提供了转换到不止一种类型的自动类型转换时,会发生一个引起出错的问题,这个问题被称为扇出(fan-out)
posted @
2012-02-28 19:24
墨界夜
阅读(
119)
评论()
收藏
举报