为MyStr添加赋值运算符操作。
因为原题中只有类的大体框架,我就自己写了一个类和一个完整的函数。
#include <iostream>
#include <string.h>
using namespace std;
class MyStr // 因为程序中没有用到拷贝构造和析构, 我省略了
{
public:
MyStr &operator = (const MyStr &str);
MyStr(char *p = NULL)
{
if(p == NULL) // 做一下判断
{
m_p = NULL;
}
else
{
m_p = new char[strlen(p) + 1]; // 赋值前先开辟空间
strcpy(m_p, p);
}
}
void GetChar()
{
cout << m_p << endl;
}
private:
char *m_p;
};
MyStr &MyStr::operator = (const MyStr &str)
{
if(this == &str) // 需要判断一下是不是自身
return *this;
if(this->m_p != NULL) // 判断是否是NULL
{
delete[] m_p;
m_p = NULL;
}
m_p = new char[strlen(str.m_p) + 1];
strcpy(m_p, str.m_p);
return *this;
}
int main()
{
MyStr s1("1234");
MyStr s2;
s2 = s1;
s2.GetChar();
return 0;
}