所以也并非必须返回引用,返回引用的好处既可以于赋值的原始语义已知,又可避免拷贝构造函数和析构函数的调用。 “题外话”:如果在类中没有说明本身的拷贝构造函数和赋值运算符,编译程序将会提供,但他们都只是对对象进行成员浅拷贝。在那些指向堆空间指针作为数据成员的类中,必须避免使用浅拷贝,而要为类定义自己的赋值运...
因为赋值表达式的结果必须是一个左值。
总之,使用引用作为赋值运算符的返回值是 C++ 中的最佳实践,它提供了更好的语义、效率和灵活性。
1、赋值返回引用 x = y = z 先执行y = z,返回y的引用,执行x = y 2、赋值不返回引用 x = y = z 先执行y = z,返回用y初始化的临时对象(注意临时对象都是常对象),再执行x = y的临时对象(要求operator=(const X&) ),返回用x初始化的临时对象(此处要求拷贝构造函数必须为X(const X&) )。 所以...
所以如果你不用引用做返回时 就必须定义自定义的拷贝构造函数。 当然咯 有指针成员时 必须要注意 自定义 拷贝构造了 其实还是为了提高效率 和 减少零时对象的生成 不调用 拷贝构造函数! classMyClass{public:// 赋值运算符重载MyClass& operator=(constMyClass& other) {if(this != &other) {// 自赋值检查...