C++类对象的深拷贝、浅拷贝构造函数
在学习本章之前,我们已经学习了类构造函数和析构函数的相关知识。对于常见类型的对象,它们之间的复制非常简单,例如:
int a = 10
int b = a;
我们自己定义的类的对象也是对象,没有人能阻止我们通过以下方式复制它们,例如:
# include
usingnamespacetd;
class Test
{
public:
Test(int temp)
{
P1 = temp;
}
protected:
int P1;
};
void main()
{
Test a(99);
测试b = a;
}
普通对象和类对象是同一个对象,在特性上有相同点也有不同点。类对象中有成员变量,但没有普通对象。当相同的复制方法出现在不同的对象上时,系统将对它们进行不同的操作。就类对象而言,同类型类对象通过复制构造函数来完成整个复制过程。在上面的代码中,我们没有看到复制构造函数,但是也完成了复制工作。这还是因为当一个类没有自定义的复制构造函数时,系统会自动提供一个默认的复制构造函数来完成复制工作。
下面,为了说明情况,就一般情况而言(以上面的代码为例),我们先定义一个与系统默认复制构造函数相同的复制构造函数,看看它的内部是如何工作的!
代码如下:
#include
usingnamespacestd;
classTest
{
public:
Test(inttemp)
{
p1=temp;
}
Test(Test &c_t)//这里就是自定义的拷贝构造函数
{
cout
0条评论