在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如:
int a = 10;
int b =a;
自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:
#include <iostream>using namespace std;class Test{public: Test(int temp) { p1=temp; }protected: int p1;};void main(){ Test a(99); Test b=a;}
普通对象和类对象同为对象,他们之间的特性有相似之处也有不同之处,类对象内部存在成员变量,而普通对象是没有的,当同样的复制方法发生在不同的对象上的时候,那么系统对他们进行的操作也是不一样的,就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的,在上面的代码中,我们并没有看到拷贝构造函数,同样完成了复制工作,这又是为什么呢?因为当一个类没有自定义的拷贝构造函数的时候系统会自动提供一个默认的拷贝构造函数,来完成复制工作。
下面,我们为了说明情况,就普通情况而言(以上面的代码为例),我们来自己定义一个与系统默认拷贝构造函数一样的拷贝构造函数,看看它的内部是如何工作的!
代码如下:
#include <iostream>using namespace std;class Test{public: Test(int temp) { p1=temp; } Test(Test &c_t)//这里就是自定义的拷贝构造函数 { cout<<"进入copy构造函数"<<endl; p1=c_t.p1;//这句如果去掉就不能完成复制工作了,此句复制过程的核心语句 }public: int p1;};void main(){ Test a(99); Test b=a; cout<<b.p1; cin.get();}
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 函数
, 拷贝
, 复制构造函数
, 代码
, test
, 拷贝构造函数
, temp
, 对象拷贝
默认拷贝函数
js对象浅拷贝、对象的浅拷贝、对象的深拷贝和浅拷贝、js对象浅拷贝和深拷贝、拷贝构造函数,以便于您获取更多的相关知识。