#include<iostream>
#include<cstring>
using namespace std;
class Cstring
{
private:
char *m_ptr;
public:
Cstring(char *pData=NULL);//构造函数
Cstring(const Cstring &str);//复制构造函数
~Cstring(void);
Cstring &operator = (const Cstring &str);
void print();
};
void Cstring::print()
{
cout<<m_ptr<<endl;
}
Cstring::Cstring(char *pData)
{
if(pData==NULL)
{
m_ptr=new char[1];
m_ptr[0]='\0';
}
else
{
int len=strlen(pData);
m_ptr=new char[len+1];
strcpy(m_ptr,pData);
}
}
Cstring::Cstring(const Cstring&str)
{
int len=strlen(str.m_ptr);
m_ptr=new char[len+1];
strcpy(m_ptr,str.m_ptr);
}
Cstring::~Cstring()
{
delete []m_ptr;
}
//Cstring& Cstring::operator =(const Cstring &str)
//{
// if(this==&str)
// return *this;
// delete []m_ptr;
// m_ptr=NULL;
//
// int len=strlen(str.m_ptr);
// m_ptr=new char[len+1];
// strcpy(m_ptr,str.m_ptr);
//
// return *this;
//}
/**
*
* 或者如下代码代表
*
*/
// Cstring &Cstring::operator =(const Cstring &str)
// {
// if(this!=&str)
// {
// delete []m_ptr;
// m_ptr=NULL;
//
// int len=strlen(str.m_ptr);
// m_ptr=new char[len+1];
// strcpy(m_ptr,str.m_ptr);
// }
// return *this;
// }
/**
*
* 亦或者
*
*/
Cstring &Cstring::operator = (const Cstring & str)
{
if(this!=&str)
{
Cstring strTemp(str);
char *pTemp=strTemp.m_ptr;
strTemp.m_ptr=m_ptr;
m_ptr=pTemp;
}
return *this;
}
int main()
{
char *text="hello world.";
Cstring str1(text);
Cstring str2;
str2=str1;
str1.print();
str2.print();
return 0;
}
赋值运算符函数
最新推荐文章于 2024-06-30 19:20:55 发布