<pre name="code" class="cpp">// ( offer: )
#include <string>
class MyString
{
public:
//
MyString(char* pData = NULL);
//
MyString(const MyString& str);
//
~MyString();
//
MyString& operator = (const MyString &str);
//
void print();
private:
char* mData;
};
//
MyString::MyString(char* pData)
{
if (pData == NULL)
{
mData = new char[1];
mData[0] = '\0';
}
else{
int length = strlen(pData);
mData = new char[length + 1];
strcpy_s(mData, strlen(pData) + 1, pData);
}
}
//
MyString::MyString(const MyString& str)
{
int length = strlen(str.mData);
mData = new char[length + 1];
strcpy_s(mData, strlen(str.mData) + 1, str.mData);
}
//
MyString::~MyString(){
delete mData;
}
/*
//
MyString& MyString::operator = (const MyString& str)
{
if (this == &str)
return *this;
delete mData;
mData = NULL;
int length = strlen(str.mData);
mData = new char[length + 1];
strcpy_s(mData, strlen(str.mData)+1,str.mData);
return *this;
}*/
/*
, :
, 。
:
*/
MyString& MyString::operator =(const MyString &str){
if(this != &str){
MyString Tempstr(str);
char* temp = Tempstr.mData;
Tempstr.mData = mData;
mData = temp;
}
return *this;
}
//
void MyString::print(){
printf("%s
",mData);
}
/********************** *****************/
void test1()
{
char* text = "hello world!";
MyString str1(text);
MyString str2;
//
str2 = str1;
str2.print();
}
void test2()
{
char* text = "hello world!";
MyString str1(text);
//
MyString str2(str1);
str2.print();
}
void test3()
{
char* text = "hello world!";
MyString str1(text);
MyString str2;
MyString str3;
//
str3= str2 = str1;
str2.print();
str3.print();
}
void main()
{
//test1();
//test2();
test3();
}