面试题1_赋值运算符的实现
//面试题1:赋值运算符的实现
//赋值运算符的实现,需要考虑以下四点:
//点1:函数的返回值要是一个引用,并且是实例自身的引用,以便实现连续赋值。
//点2:函数的参数要是一个常量引用,因为我们并不需要修改它,只需要引用它即可。
//点3:如果我们忘记在分配新内存之前释放原有的内存,那么有可能造成内存泄漏。
//点4:函数开始前要判断传入的参数和当前的实例是不是同一个实例,要是的话直接返回。
// 否则有可能在我们释放了内存之后还要去引用它造成崩溃。
class CMyString
{
public:
CMyString(char *p=nullptr);
~CMyString(void) {}
CMyString(const CMyString &str);
private:
char *pData;
};
CMyString &CMyString::operator=(const CMyString &str)
{
if(this != &str)
{
CMyString strtemp(str);
char *ptemp=strtemp.pData;
strtemp.pData=pData;
pData=ptemp;
}
return *this;
}