经典问题解析三
一,关于赋值的疑问
(一)编译器为没个类默认重载了赋值操作符
(二)默认的赋值操作符仅完成浅拷贝
(三)当需要进行深拷贝时必须重载赋值操作符
(四)赋值操作符与拷贝函数有相同的存在意义
二,一般性原则
重载复制操作符,必然需要实现深拷贝!!!
三,编译器默认提供的函数
class Test
{
};
等价于
class Test
{
public:
Test();
Test(const Test&);
Test& operator = (const Test&);
~Test();
};
四,小结
(一)在需要进行深拷贝的时候必须重载赋值操作符
(二)赋值操作符和拷贝构造函数有同等重要的意义
(三)string类通过一个数据空间保存字符数据
(四)string类通过一个成员变量保存当前字符串的长度
(五)C++开发时尽量避开C语言中惯用的编程思想