AssignmentOperator

来源:互联网 发布:forest类似的软件 编辑:程序博客网 时间:2024/06/16 19:56
#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();}







0 0
原创粉丝点击