问题描述:对字符串的赋值运算符进行重载。
注意点:1.将返回值的类型声明为该类型的引用,同时在函数结束前返回实例自身的应用。返回引用的目的是允许连续赋值。
2.把传入的参数的类型声明为常量引用。如果传入参数不是引用而是实例,那么从形参到实参会调用一次复制构造函数。把参数声明为引用可以避免无所谓的消耗,提高代码的效率。
3.判断传入的参数和当前的实例是不是同一个实例。
4.释放实例自身已有的内存,否则会造成内存泄露。
代码如下:
#include <iostream>
#include <string.h>
using namespace std;
class CMyString
{
public:
CMyString();
CMyString(char* pData=NULL);
//复制构造函数
CMyString(const CMyString& str);
~CMyString(void);
//赋值操作符
CMyString& operator=(const CMyString &str);
const char* getData() const{return m_pData;}
private:
char* m_pData;
};
//默认构造函数
CMyString::CMyString()
{
m_pData=new char[1];
m_pData[0]='\0';
}
CMyString::CMyString(char* pData)
{
m_pData=pData;
}
CMyString::~CMyString