如何实现赋值运算符函数

来源:互联网 发布:java的equals方法 编辑:程序博客网 时间:2024/06/06 12:47

题目:为下面的类添加赋值运算符函数:

class CMyString

{

public:

CMyString(char* pData = NULL);

CMyString(const CMyString& str);

~CMyString(void);


private:

char* m_pData;

};

赋值运算符函数就是重载赋值运算符,相信大家即使写不对也可以大致写出来,而如果在面试中遇到这种情况,那么面试官考查的肯定是细节方面了,大致注意以下几点:

1.返回值类型应为该类的引用,因为只有这样才能连续赋值;

2.在函数结束前返回自身的引用;

3.在分配内存之前要释放自身已有空间,否则将发生内存泄漏;

4.参数类型必须是常量引用;

5.判断传入实例与当前实例是否相同。


综上,该函数应该写成如下:

CMyString& CMyString::operator=(const CMyString &str)

{

if(this==&str)

return this;

delete []m_pData;

m_pData=NULL;

m_pData=new char[strlen(str.m_pData)+1];

strcpy(m_pData,str.m_pData);

return this;

}

2 0