15.赋值运算符为什么返回类的引用?不是引用怎么办?

版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! https://blog.csdn.net/Fly_as_tadpole/article/details/82954366

赋值运算符为什么返回类的引用?不是引用怎么办?

class string{

public:

string(const char *str=NULL);

string(const string& str);     //copy构造函数的参数为什么是引用呢?  我相信大家都懂的!

string& operator=(const string & str); //赋值函数为什么返回值是引用呢?

~string();

};

如果返回的是值时, return *this 后马上就调用拷贝构造函数。
但是如果没有定义拷贝构造函数  ,就会调用默认的拷贝构造函数。
我们知道调用默认的拷贝构造函数时当在类中有指针时可能会出错(浅拷贝)。

当在连续赋值的场景中,所以如果你不用引用做返回时,会调用拷贝构造函数,而且必须定义自定义的拷贝构造函数。

猜你喜欢

转载自blog.csdn.net/Fly_as_tadpole/article/details/82954366