/*深层复制构造函数
为了解决浅层复制构造函数导致的迷途指针问题,
我们必须创建自己的复制构造函数,
并且在函数里为我们的成员变量分配内存,
这样,在分配完内存后,旧对象的成员变量
就可以复制到新的内存区域中,两个对象的
成员变量都各自拥有自己的内存区域,
一个对象在析构后不会再影响到另一个,
我们把这种复制方式叫做深层复制。
#include <iostream>
using namespace std;
class A
{
public:
A(){x=new int;*x=5;}
~A(){delete x;x=NULL;}
A(const A&a)
{
cout<<"复制构造函数执行。。。\n"<<endl;
x=a.x;
}
void print()const{cout<<*x<<endl;}
void set(int i){*x=i;}
private:
int *x;
};
int main()
{
A*a=new A();
cout<<"a:";
a->print();
cout<<endl;
A b=(*a);
b.print();
a->set(32);
cout<<"b:";
b.print();
cout<<endl;
delete a;
return 0;
}*/
#include<iostream>
using namespace std;
class A
{
public:
A()
{
x=new int;*x=5;
}
~A(){delete x;x=NULL;}
A(const A&a)
{
cout<<"复制构造函数执行\n";
x=new int;
*x=*(a.x);
}
void print()const
{
cout<<*x<<endl;
}
void set(int i)
{
*x=i;
}
private:
int *x;
};
int main()
{
A *a=new A();
cout<<"A:";
a->print();
A b=(*a);
b.print();
a->print();
b.set(32);
delete a;
b.print();
return 0;
}
深层复制构造函数
最新推荐文章于 2021-10-21 23:48:16 发布