Effective C++ 条款10 令operator=返回一个reference to *this 条款11 在operator=中处理"自我赋值"
2015-08-22 15:08
411 查看
1. 为了支持形如“a=b=c”的连锁形式,最好令operator=返回一个reference to *this.
2. 如果类中含有用于指向堆内存的指针,那么赋值操作符就要注意自我赋值的问题,例如:
View Code
这样牺牲了清晰性而且比之前的例子多了一次对象构造,但采用按值传递实际上"将'copying'动作从函数本体移至'函数参数构造阶段'",这"可令编译器有时生成更高效的代码".
4. 不只是赋值操作符,其它函数如果要操作一个以上对象,而其中有些对象可能是同一个时,也要确保函数行为的正确性.
2. 如果类中含有用于指向堆内存的指针,那么赋值操作符就要注意自我赋值的问题,例如:
class A{ public: void swap(A& rhs){ ... } A& operator=(A tmp){//注意此处按值传递 A temp(tmp); swap(temp); } private: int* ptr; };
View Code
这样牺牲了清晰性而且比之前的例子多了一次对象构造,但采用按值传递实际上"将'copying'动作从函数本体移至'函数参数构造阶段'",这"可令编译器有时生成更高效的代码".
4. 不只是赋值操作符,其它函数如果要操作一个以上对象,而其中有些对象可能是同一个时,也要确保函数行为的正确性.
相关文章推荐
- C++打印杨辉三角形
- Effective C++ 条款9 决不在构造和析构过程后调用虚函数
- bcb 6.0工程平移C++ builder xe8环境
- C++基础知识
- 二叉树的前、中、后序遍历与重构问题
- 归并排序(C/C++)
- C++ 4 种具有更 为准确语义的新强制转换类型
- C Primer Plus 学习笔记
- c++ primer 复习-函数
- C++内存分配一:C++程序内存的基本组成
- C语言求素数的算法
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- C++ int类型转换string类型
- C++常见面试
- C++面试常见题目问与答(汇总一)
- POJ C++程序设计 编程题#4:魔兽世界之一:备战
- 图解C++
- C#在C++编写的DLL中注册函数并回调
- C语言快排
- C++ Primer 5e chapter 12