题目:类CMyString的声明如下:class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); CMyString& operator = (const CMyString& str);private: char* m_pData;};
#include <iostream>
#include <string>
using namespace std;
class MyString
{
public:
//MyString();
MyString(char *str =NULL);
~MyString();
MyString(const MyString &other);
MyString & operator=(const MyString &other);
void print();
private:
char *m_data;
};
MyString::MyString(char *str)
{
if(str==NULL)
{
//m_data = (char *)malloc(sizeof(char));
m_data = new char[1];
*m_data ='\0';
}
else
{
int len = strlen(str);
//m_data = (char *)malloc(sizeof(char)*len+1);
m_data = new char[len+1];
strcpy(m_data ,str);
}
}
MyString::~MyString()
{
//free(m_data);
delete[]m_data;
}
MyString::MyString(const MyString &other)
{
int len =strlen(other.m_data);
//m_data = (char *)malloc(sizeof(char)*len+1);
m_data = new char[len+1];
strcpy(m_data ,other.m_data);
}
MyString & MyString::operator=(const MyString &other)
{
if(this==&other)
{
return *this;
}
//free(m_data);
delete[]m_data;
m_data = NULL;
int len =strlen(other.m_data);
//m_data = (char *)malloc(sizeof(char)*len+1);
m_data = new char[len+1];
strcpy(m_data ,other.m_data);
return *this;
}
void MyString::print()
{
printf("%s",m_data);
}
void main()
{
MyString str1("hello");
MyString str2("word");
MyString str3 = str1;
MyString str4 ;
str4 = str2;
str1.print();
str2.print();
str3.print();
str4.print();
}