#include<stdio.h>
#include<string.h>
class CMyString{
public:
CMyString(char *pData=NULL);//含有无参构造函数
CMyString(const CMyString &str);
~CMyString();
void Print();
CMyString& operator=(const CMyString &str);
private:
char* p_Data;
};
//当声明一个CMyString str时,构造函数将传入NULL,做好单独写无参构造函数
//同时防止传入一个NULL,出现异常
CMyString::CMyString(char *pData){
if(pData==NULL){
p_Data=NULL;
}
else{
int length=strlen(pData);
p_Data=new char[length+1];
strcpy(p_Data,pData);
}
}
CMyString::CMyString(const CMyString &str){
int length=strlen(str.p_Data);
p_Data=new char[length+1];
strcpy(p_Data,str.p_Data);
}
CMyString::~CMyString(){
delete[] p_Data;
}
/*
CMyString& CMyString::operator=(const CMyString &str){
//自己赋值给自己,直接返回
if(this==&str)
return *this;
delete []p_Data;
p_Data=NULL;
int length=strlen(str.p_Data);
p_Data=new char[length+1];
strcpy(p_Data,str.p_Data);
return *this;
}*/
CMyString& CMyString::operator=(const CMyString &str){
if(this!=&str){
CMyString strTemp(str);//临时变量
char* temp=strTemp.p_Data;
strTemp.p_Data=p_Data;
p_Data=temp;
}
return *this;
}
void CMyString::Print(){
printf("%s\n",p_Data);
}
//============Test==============
void Test1(){
char* text="Hello Wolrd!";
CMyString str1(text);
CMyString str2(str1);
str1.Print();
str2.Print();
CMyString str3=str1;
str3.Print();
}
void Test2(){
char* text="HELLO";
CMyString str1(text);
str1=str1;
str1.Print();
CMyString str2,str3;
str3=str2=str1;
str2.Print();
str3.Print();
}
void main(){
Test1();
Test2();
}
AssignmentOperator
最新推荐文章于 2021-03-11 09:51:38 发布