#include <iostream>
#include<cstring>
using namespace std;
class node{
public:
node(char *namel,double scorel);
node(const node &n);
~node();
private:
char *name;
double score;
};
node::node(char *namel,double scorel)
{
cout<<"析构函数使用中 "<<namel<<endl;
name=new char[strlen(namel)+1];
if(name!=0)
{
strcpy(name,namel);
score=scorel;
}
}
node::node(const node &n)
{
cout<<"拷贝构造函数使用中 "<<n.name<<endl;//这里用的是n.name方式d而不是n.namel,因为n.namel不在属于这个{}里了
name=new char[strlen(n.name)+1];//既然用的是拷贝构造函数,那么也就是用n的值了
if(name!=0)
{
strcpy(name,n.name);
score=n.score;
}
}
node::~node()
{
cout<<"析构函数使用中 "<<name<<endl;
name[0]='\0';
delete []name;
}
int main()
{
node n("陈臣余红福",100);
node n1=n;
return 0;
}
注意在拷贝函数中要用n.name,在析构函数中用的是name,对于用n.namel是在自己定义的析构函数中用的
这个是深拷贝意思就是把拷贝析构函数写出来
对于有指针类型的数据,不能使用muren的拷贝析构函数也就是浅拷贝