Question:为该类型添加赋值运算符。
#include<iostream>
#include<string>
using namespace std;
class CMyString
{
public:
CMyString(char * mData = nullptr);
CMyString(const CMyString & str);
~CMyString(void);
CMyString & operator=(const CMyString & mData);
void print();
private:
char * pData=0;
};
CMyString::CMyString(char * mData)
{
if (mData==nullptr)
{
pData = new char[1];
*pData = '/n';
}
else
{
int length = strlen(mData);
pData = new char[length + 1];
strcpy(pData, mData);
}
}
CMyString::CMyString(const CMyString & str)
{
int length = strlen(str.pData);
pData = new char[length + 1];
strcpy(pData, str.pData);
}
CMyString::~CMyString()
{
delete[]pData;
}
CMyString& CMyString::operator=(const CMyString & str)
{
if (this==&str)
{
return *this;
}
delete[]pData;
pData = nullptr;
pData = new char[strlen(str.pData) + 1];
strcpy(pData, str.pData);
return *this;
}
void CMyString::print()
{
cout << pData << endl;
}
//实例赋值给另外一个
void Test()
{
char *test = "happy_day";
CMyString str1(test);
CMyString str2 = str1;
str1.print();
str2.print();
}
//实例赋值给自己
void Test01()
{
char *test = "Be a funny person!\n";
CMyString str1(test);
str1 = str1;
str1.print();
}
//连续赋值
void Test02()
{
char *test = "cheer up!\n";
CMyString str1(test);
CMyString str2, str3;
str3 = str2 = str1;
str2.print();
str3.print();
}
int main()
{
Test();
Test01();
Test02();
system("pause");
return 0;
}