Effective C++ 学习笔记(12)
2011-08-03 16:03
330 查看
让operator=返回*this的引用
要完成如 a = b =c 这样的操作所以返回值不能为void,对这个表达式,编译器的理解为 a = (b = c),所以operator=可以返回左值或者右值,但有时候我们也需要这样的操作 (a = b) = c ,b赋值给a,然后c赋值给a。所以operator=应该返回右值。、
由此分析,我们得到operator=的函数声明为 T & T::operator=(const T &)。
假设我们传入的参数为a,则a为const T & 类型,与返回类型不符,所以不能作为返回值。
如果我们去掉参数的const,首先,这样不安全,函数内部可能改变传入的参数,其次对于一些字符串字面量,其实质仍为const。
所以我们只能返回*this的引用。
要完成如 a = b =c 这样的操作所以返回值不能为void,对这个表达式,编译器的理解为 a = (b = c),所以operator=可以返回左值或者右值,但有时候我们也需要这样的操作 (a = b) = c ,b赋值给a,然后c赋值给a。所以operator=应该返回右值。、
由此分析,我们得到operator=的函数声明为 T & T::operator=(const T &)。
假设我们传入的参数为a,则a为const T & 类型,与返回类型不符,所以不能作为返回值。
如果我们去掉参数的const,首先,这样不安全,函数内部可能改变传入的参数,其次对于一些字符串字面量,其实质仍为const。
所以我们只能返回*this的引用。
相关文章推荐
- Effective C++ 学习笔记:让operator=返回*this的引用
- Effective C++ 学习笔记(16)
- C++学习笔记(12)——多态与虚函数
- More Effective C++ 学习笔记(1)
- effectIve c++ 学习笔记
- Effective C++ 学习笔记:让operator=返回*this的引用
- C++学习笔记12-模板1
- c++ 学习笔记(高级linux编程) day12
- Effective C++ 学习笔记(8)
- Effective c++ 学习笔记——条款04:确定对象被使用前已先被初始化
- Effective C++ 学习笔记(二)
- Effective C++ 学习笔记 00 概述
- Effective c++ 学习笔记(四)
- Effective C++ 学习笔记(9)
- Effective C++ 学习笔记(13)
- Effective C++ 学习笔记 01 const关键字
- Effective c++ 学习笔记(二)
- Effective C++学习笔记之第三章
- Effective C++ 学习笔记(九)
- Effective C++ 学习笔记14