博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++基础]021_浅拷贝和深拷贝
阅读量:6959 次
发布时间:2019-06-27

本文共 1426 字,大约阅读时间需要 4 分钟。

浅拷贝:即类中有指针成员变量,拷贝时,只拷贝了指针变量,而没有拷贝指针变量所指向的地址块。

实例代码:

1 #include 
2 using namespace std; 3 4 class Tree{ 5 public: 6 // 拷贝构造函数 7 Tree(const Tree& tree){ 8 this->num = tree.num; 9 }10 // 构造函数11 Tree(){12 num = new int(10);13 }14 // 析构函数15 ~Tree(){16 delete num;17 }18 // 普通打印成员变量内容函数19 void printNum(){20 cout<<*(this->num)<
printNum();30 31 // 拷贝构造函数起作用了32 Tree tree2(*tree1);33 tree2.printNum();34 35 // 销毁tree1对象36 delete tree1;37 // 此时,num是悬空指针了38 tree2.printNum();39 40 system("pause");41 return 0;42 }

 

深拷贝:即复制对象时如有指针变量,那么也复制指针变量所指向的内存块。

实例代码:

1 #include 
2 using namespace std; 3 4 class Tree{ 5 public: 6 // 拷贝构造函数(深拷贝) 7 Tree(const Tree& tree){ 8 this->num = new int(); 9 *(this->num) = *(tree.num);10 }11 // 构造函数12 Tree(){13 num = new int(10);14 }15 // 析构函数16 ~Tree(){17 delete num;18 }19 // 普通打印成员变量内容函数20 void printNum(){21 cout<<*(this->num)<
printNum();31 32 // 拷贝构造函数起作用了33 Tree tree2(*tree1);34 tree2.printNum();35 36 // 销毁tree1对象37 delete tree1;38 // 此时,num是悬空指针了39 tree2.printNum();40 41 system("pause");42 return 0;43 }

转载于:https://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/11/2720661.html

你可能感兴趣的文章
C# 通过反射获取MVC Controller里的类名,方法名,参数列表,返回值类型,Description描述,自定义Attribute...
查看>>
Java:集合,Collections工具类用法
查看>>
In-Stream Big Data Processing
查看>>
败者树_百度百科
查看>>
[转载]DB2与ORACLE、MYSQL比较2
查看>>
字符设备驱动笔记——异步通知(八)
查看>>
MVC4 开篇
查看>>
IIS 与 Apache共存
查看>>
DWZ与KindEditor编辑器的整合
查看>>
PHP发送HEAD方法请求
查看>>
7zip File: How to Uncompress 7z files on Ubuntu, Debian, Fedora
查看>>
office web apps
查看>>
python 模块路径
查看>>
ActiveMQ简介
查看>>
第一部分:开发前的准备-第六章 用户界面基础指导
查看>>
OracleHelper[.Net 连接Oracle数据库的封装类]
查看>>
JDBC与JNDI的区别
查看>>
C语言 消灭编译警告(Warning)
查看>>
转载:Unobtrusive JavaScript in ASP.NET MVC 3 隐式的脚本在MVC3
查看>>
C#中数据库连接的几种方式
查看>>