[cpp] view plaincopyprint?
#include <iostream>
#include <cstring>
using namespace std;
class Internet
{
public:
Internet(char *name,char *url)
{
this->name = new char[strlen(name)+1];
this->url = new char[strlen(url)+1];
if(name!=NULL)
{
strcpy(this->name,name);
}
if(url!=NULL)
{
strcpy(this->url,url);
}
}
Internet(Internet &temp)
{
this->name=new char[strlen(temp.name)+1];
this->url=new char[strlen(temp.url)+1];
if(this->name)
{
strcpy(this->name,temp.name);
}
if(this->url)
{
strcpy(this->url,temp.url);
}
}
~Internet()
{
delete[] this->name;
delete[] this->url;
}
Internet& operator =(Internet &temp)//赋值运算符重载函数
{
delete[] this->name;
delete[] this->url;
this->name = new char[strlen(temp.name)+1];
this->url = new char[strlen(temp.url)+1];
if(this->name!=NULL)
{
strcpy(this->name,temp.name);
}
if(this->url!=NULL)
{
strcpy(this->url,temp.url);
}
return *this;
}
public:
char *name;
char *url;
};
int main()
{
Internet a("王世晖的专栏","blog.csdn.net/shihui512");
Internet b = a;//b对象还不存在,所以调用拷贝构造函数,进行构造处理。
cout<<b.name<<endl<<b.url<<endl;
Internet c("清水河畔外网","bbs.qshpan.com");
b = c;//b对象已经存在,所以系统选择赋值运算符重载函数处理。
cout<<b.name<<endl<<b.url<<endl;
}
/*****************************
运行结果:
王世晖的专栏
blog.csdn.net/shihui512
清水河畔外网
bbs.qshpan.com
******************************/
#####For me:
对象存在时,用“=”重载函数
对象不存在时,用拷贝构造函数。