题目:
如下为类型CMyString的声明,请为该类型添加赋值运算符函数:
class CMyString
{
public:
CMyString(char* p_Data = NULL);
CMyString(const CMyString& str);
~CMyString(void);
private:
char* m_pData;
};
首先对于C++一个类中的6个默认的函数分别是:构造,拷贝构造,赋值运算符重载,析构,以及取地址操作符重载以及const修饰的取地址操作符重载。
对于拷贝构造以及赋值运算符重载,默认的使用是浅拷贝,也就是说将该对象的内存原封不动地挪动到新对象的内存中,因此对于含有指针的类,我们往往需要自己实现copying的操作来完成深拷贝(除非你就需要以浅拷贝的方式完成该操作),否则很有可能造成有多个指针指向同一块空间,在析构时候同一块空间析构多次导致崩溃。
方法一:重新分配内存并拷贝:
1. 赋值运算符的重载函数的声明,需要返回类型的引用,也就是CMyString& ,这里是为了考虑到形如 a = b = c这样的连