#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;class Person
{public:Person(){}//初始化属性Person(char* name, int age){m_Name = (char*)malloc(strlen(name) + 1);//这里的属性是指向堆的空间,需要自己开辟strcpy(m_Name, name);//进行赋值m_age = age;}//系统提供的拷贝构造是地址值的引用,在进行析构的时候会释放两次堆空间所以会报错//所以我们需要深拷贝来开辟新的区间Person(const Person&p){m_age = p.m_age;m_Name = (char*)malloc(strlen(p.m_Name) + 1);strcpy(m_Name, p.m_Name);}~Person(){cout << "析构函数调用" << endl;if (m_Name != NULL){free(m_Name);m_Name = NULL;}}char * m_Name;//年龄int m_age;
};void test01()
{Person p1("安安", 9);Person p2(p1); //调用拷贝构造
}int main() {test01();system("pause");return EXIT_SUCCESS;
}

C++ 深拷贝和浅拷贝相关推荐

  1. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  2. C++深拷贝与浅拷贝

    浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值.但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件..当 值拷贝的时候,两个对象就有用共同的资源,同时对资源可以 ...

  3. python的深拷贝与浅拷贝

    对于list, set, dict来说, 直接赋值. 其实是把内存地址交给变量. 并不是复制⼀份内容. 两个变量的内容其实为一个地址,如果要在复制的同时分配新的地址则需要用到深拷贝和浅拷贝的命令 ls ...

  4. 详谈Javascript中的深拷贝和浅拷贝

    数据复制是我们编程中经常会使用到的技术,对于普通数值数据来说,复制很简单,但是对于复杂类型比如对象的复制,就会有很多需要考虑的东西,比如我们经常说到的深拷贝和浅拷贝. 浅拷贝 复制的对象和原始对象属性 ...

  5. python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝

    在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...

  6. c++深拷贝和浅拷贝

    C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数--即浅拷贝,它能够完成成员的一一复制.当 ...

  7. 更清晰的认识对象——深拷贝与浅拷贝

    对象在引用的时候引用的是对象的地址,所以导致如果修改其中一个对象,就会对其他引用这个地址的对象进行修改,这种结果并不是我们想要的,这个时候我们就要用到深拷贝和浅拷贝去解决这个问题了. var a = ...

  8. 深拷贝与浅拷贝~动态内存释放有关

    浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如: class A{ public: A(int ...

  9. 深入浅出的“深拷贝与浅拷贝”

    js中的浅拷贝与深拷贝,只是针对复杂数据类型(object, Array)的复制问题.浅拷贝和深拷贝都可以实现在已有对象上再生出一份的作用.但是对象的实例是存储在堆内存中然后通过一个引用值只操作对象, ...

  10. Javascript中的深拷贝和浅拷贝

    文章目录 JavaScript中的变量类型 深拷贝和浅拷贝的理解 深拷贝和浅拷贝的实现方式 为什么需要深拷贝和浅拷贝 JavaScript中的变量类型 (1).基本类型 JavaScript中的基本类 ...

最新文章

  1. 判断数组中的重复元素
  2. 《不只是美:信息图表设计原理与经典案例》—— 2.5 功能限制形式
  3. linux mysql5.5 一主多从配置
  4. [转]2020年4月github上最热门项目-python
  5. 数人云|7大ChatOps5种团队协作工具助力DevOps实践
  6. POJ2260 ZOJ1949 UVA541 Error Correction题解
  7. php query builder,php – Symfony2 – Doctrine2 QueryBuilder WHERE I...
  8. Linux文件系统下的分区和挂载
  9. 类方法实现:用python实现一个简单的单词本,添加/查找/删除单词。
  10. 基于Java的学生管理系统
  11. Linux交叉编译FFmpeg
  12. 2 Python数据分析 Tushare双均线与金叉死叉日期 Pandas数据清洗 级联操作 合并操作
  13. W5500 dns域名解析
  14. 拉格朗日乘数法(Lagrange multiplier)
  15. 航空中的QNH QNE QFE分别都是什么
  16. 企业官网中的“农家老宅”和“精品房”区别在哪?
  17. ZZULIOJ-1001,植树问题(Java)
  18. JOOQ 踩坑和评价
  19. ADT无法识别飞思卡尔的解决办法
  20. 光伏发电站|太阳能电池板辐照度(4G)无线直流电压汇集电流测量采集监控技术方案

热门文章

  1. layuiajax提交表单控制层代码_无代码搭建系统(一)——流程表单搭建
  2. Python视频处理案例六则:旋转视频、调整音量/播放速度、淡入淡出、插入转场素材...
  3. 1000道Python题库系列分享十二(9道编程题)
  4. php获取文件目录文件名,php获取路径中的文件名的方法有哪些
  5. C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
  6. 生产者消费者代码_生产者消费者模型:Kotlin 多线程读写文件实例
  7. list删除某个元素_java list 删除元素
  8. linux for循环套for循环格式_4.20 for循环 break、continue关键字
  9. java kafka分布式_JavaWeb项目架构之Kafka分布式日志队列
  10. ids和ips主要区别在于_接口测试和功能测试的区别