无参, 有参 , 拷贝(深拷贝,浅拷贝)
无参, 有参 , 拷贝
系统默认提供(无参, 有参 , 拷贝)3种构造函数,一旦自己写了其一,之前的构造函数都不提供默认
深拷贝,浅拷贝
// 浅拷贝:系统默认拷贝,指针直接复制,会导致堆区内存重复释放
// 深拷贝:自己写拷贝函数,用new申请新的空间
初始化列表
// person(int x){
// name = x;
// cout<< "有参构造" <<endl;
// }
//初始化列表
person(int x):name(x){
name = x;
}
代码
#include<iostream>
using namespace std;
// 无参, 有参 , 拷贝
// 深拷贝,浅拷贝
// 浅拷贝:系统默认拷贝,指针直接复制,会导致堆区内存重复释放
// 深拷贝:自己写拷贝函数,用new申请新的空间
class person{
public:
person(){
cout<< "无参构造" <<endl;
}
// person(int x){
// name = x;
// cout<< "有参构造" <<endl;
// }
//初始化列表
person(int x):name(x){
name = x;
}
person(const person& s1){
name = s1.name;
cout<< "拷贝构造" <<endl;
}
~person(){
cout<< "析构" <<endl;
}
void get(){
cout << name << endl;
}
private:
int name;
};
person test(){
person s1 = 10;
cout<< (int*)&s1 <<endl;
return s1;
}
int main(){
person s1=test();
s1.get();
cout<< (int*)&s1 <<endl;
person s2(s1);
s2.get();
return 0;
}