您的位置:首页 > 编程语言 > C语言/C++

c++深层复制

2013-03-09 16:22 162 查看
本文内容已经移至我最新的个人博客,欢迎大家到我的新网站交流学习。 查看文章请点我。

<span style="font-size:18px;">// HelloWorld.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class demo
{
public:
demo(){x=new int;*x=25;cout<<"无参构造函数"<<endl;};
demo(const demo&d)
{
cout<<"复制构造函数执行。"<<endl;
x=new int;
*x=*(d.x);
}
void get()const{cout<<*x<<endl;}
void set(int n){*x=n;}
~demo(){delete x;x=NULL;cout<<"函数析构完毕"<<endl;}
private:
int *x;
};

int _tmain(int argc, _TCHAR* argv[])
{
demo *a=new demo;
a->get();
demo b=(*a);
b.get();
a->set(35);
a->get();
b.get();
system("pause");
return 0;
}</span>


深层复制也就是为复制的成员变量重新开辟一个内存,是两者没有直接的关联。

相反,浅层复制就是让两个成员指针变量指向同一个内存地址,这样容易造成程序的崩溃。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: