会出现几个拷贝构造函数,为什么?
#include <iostream>
using namespace std;
class Internet
{
public:
Internet(char *name,char *url)
{
cout<<"构造函数"<<endl;
Internet::name = new char[strlen(name)+1];
Internet::url = new char[strlen(url)+1];
if(name)
{
strcpy(Internet::name,name);
}
if(url)
{
strcpy(Internet::url,url);
}
}
Internet(Internet &temp)
{
cout<<"拷贝构造函数"<<endl;
Internet::name = new char[strlen(temp.name)+1];
Internet::url = new char[strlen(temp.url)+1];
if(this->name)
{
strcpy(Internet::name,temp.name);
}
if(this->url)
{
strcpy(Internet::url,temp.url);
}
}
~Internet()
{
cout<<"析构函数"<<endl;
delete []name;
delete []url;
}
Internet operator=(Internet &temp)
{
cout<<"赋值运算符重载"<<endl;
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)
{
strcpy(this->name,temp.name);
}
if(this->url)
{
strcpy(this->url,temp.url);
}
return *this;
}
private:
char *name;
char *url;
};
void main()
{
Internet a("abc","123");
Internet b = a;
cout<<"-------------------------------------------------"<<endl;
Internet c("c","3");
c = a;
}