1,普通对象之间赋值
我们知道普通对象的赋值是很简单的,如:
int a = 10;
int b = a;
仅仅只用一个等号就能将对象a的值赋值给b。
2,如果是类呢?
#include<iostream>
using namespace std;
class A{
public:
A(){
cout << "构造函数" << endl;
}
//A(A &aa){
// cout << "拷贝构造函数" << endl;
// this->a = aa.a;
//}
int a;
~A(){
cout << "析构函数" << endl;
}
};
void test(){
A a;
a.a = 10;
A b = a;
cout << b.a << endl;
}
int main()
{
test();
system("pause");
return 0;
}
可见此时使用等号可以将对象a的东西赋值给对象b,此时对象b中的数据a也变成了10。
默认的拷贝构造函数如下:
A(A &aa){
cout << "拷贝构造函数" << endl;
this->a = aa.a;
}
拷贝构造函数
- 本质上也是一种构造函数
- 调用时机当用一个对象创建另外一个对象时调用。
- 缺省的拷贝构造的作用(1,深拷贝,完全的把对象拷贝给对象;2, 浅拷贝)
上面展示的是简单的方法。
拷贝构造函数就是和正常的类似,即将一个对象里面的东西都复制给另一个对象,这种方法也是默认的拷贝构造函数所做的事情。
如果类中的数据创建到堆上,这种普通的方法还显然就不适合了,也就引出了第三步:深拷贝和浅拷贝的问题。
深拷贝和浅拷贝:https://blog.csdn.net/qq_46423166/article/details/113383873