/*
Date: 10/03/21 20:45
Description: 深复制、浅复制
复制构造函数/拷贝构造函数
浅复制/浅拷贝/位拷贝
深复制/深拷贝
*/
#include<iostream>
#include<cstring>
using namespace std;
class CDemo
{
public:
CDemo(int pa,char *cstr)
{
this->a = pa;
this->str = new char[1024];
strcpy(this->str,cstr);
}
//C++会自动帮我写一个复制构造函数
CDemo(const CDemo &obj) //自己写的复制构造函数
{
this->a = obj.a;
// this->str = obj.str;//这里不对,要深复制才行,这是浅复制
this->str = new char[1024];
if(str!=0)
strcpy(this->str,obj.str);
}
~CDemo()
{
delete str;
}
public://应该是私有的
int a;
char *str;
};
int main()
{
CDemo A(10,"hello");
CDemo B = A;//复制
cout<<A.a<<","<<A.str<<endl;
cout<<B.a<<","<<B.str<<endl;
B.str[0] = 'o';//Emergency
cout<<A.str<<endl;
return 0;
}
c++学习-oop-深复制、浅复制
最新推荐文章于 2023-12-16 13:31:44 发布