游戏开发之深拷贝与浅拷贝(C++基础)

当需要深拷贝的时候,大概率需要重写类的拷贝构造函数、构造函数和析构函数。
在构造函数中初始化指针,在拷贝构造函数中开辟内存并赋值,在析构函数中释放内存。

#include <iostream>namespace
{int g_g = 1;//当需要深拷贝的时候,大概率需要重写拷贝构造、构造和析构//在构造函数中初始化指针//在拷贝构造中开辟内存赋值//析构中释放内存class A{private:int *_p;public:A(){_p = new int;*_p = g_g++;std::cout << "构造" << *_p << std::endl;}//深拷贝A(const A& a){_p = new int;*_p = g_g++;std::cout << "拷贝构造" << std::endl;}~A(){std::cout << "析构" << *_p << std::endl;delete _p;}};
}//2021/08/23
int main8_23_1()
{A a1;A a2;A a3;static A a4;//A a4 = a1; 如果没有重写拷贝构造,而是简单的浅拷贝,会重复释放同一片内存空间,从而导致出错。//如重写拷贝构造函数,则是深拷贝A a4 = a1;return 0;
}

TIPS:
在栈区,先构造的一定是后析构。
在栈区,释放堆区数据符合栈数据结构中先进后出的特点。
先释放栈区内存,后释放全局区内存。

游戏开发之深拷贝与浅拷贝(C++基础)相关推荐

  1. (0056)iOS开发之深拷贝与浅拷贝

    参考: http://blog.csdn.net/qq_17007915/article/details/50503043 http://www.cnblogs.com/ludashi/p/38941 ...

  2. DX11 游戏开发笔记 (二) DX11 基础框架 上

    必须吐槽csdn的排版,真的是对不起它的名字! 抱了很大的决心,才决定写下这篇博文,笔者大三从其它专业转行,学习c c++也就一年多,因为入了游戏这坑, 故选择在游戏引擎这块泥泞的道路上前进,且行且开 ...

  3. 【Java 2D游戏开发(一)】GUI基础 / 显示出一个窗口

    显示窗口 游戏里所有的绘制操作都要在窗口的基础上进行,可以用JFrame来新建一个窗口 JFrame window = new JFrame();//新建窗口 window.setVisible(tr ...

  4. 【HTML5 Canvas游戏开发】笔记(一) 概述和基础讲解

    本系列文章由Shin-Knight编写,转载需注明出处. 作者:Shin-Knight 邮箱:shinknight@163.com 文章链接:http://www.cnblogs.com/knight ...

  5. Laya Air游戏开发模式之传统MVC模式(基础篇)

    没错这次要介绍的开发模式就是开发界中的万油精

  6. DX11 游戏开发笔记 (二) DX11 基础框架三角形 下

                             顶点缓存之几何三角 老鸟:怎么样,昨天游戏玩的开心吗,有没有秀出你快乐刀妹的操作. 小白:哇,那当然的,最开心的一把我现在还记忆犹新,我们前期劣势,有 ...

  7. (三)nodejs循序渐进-值传递和引用传递,深拷贝和浅拷贝(基础篇)

    值传递和引用传递 值类型变量: 存在内存的堆中,比如:a=1 引用类型变量 : 1.指针存在于栈中,2.引用类型的具体内容存在于堆中 ex:let a={b:1} a的指针指向 堆中的地址0xffac ...

  8. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  9. unity 3d游戏开发_使用Unity 5开发3D游戏

    unity 3d游戏开发 If there's one thing cooler than playing games, it's building games. 如果有比玩游戏更酷的一件事,那就是构 ...

  10. Android+3D游戏开发技术详解与典型案例

    内容导读 本书共分两篇,第一篇介绍了Android 3D游戏开发的基础知识,主要对OpenGL ES的相关内容进行了介绍. 章 名主 要 内 容 第1章 英雄还看今朝-Android简介本章介绍了市场 ...

最新文章

  1. 创建MySQL数据库
  2. Recyclerview 出现 java.lang.IndexOutOfBoundsException: Inconsistency detected 异常
  3. linux指令快速复制粘贴[龟速更新中]
  4. linux命令last格式,Linux中aulast命令起什么作用呢?
  5. leetcode 242 有效的字母异位词 C++
  6. 动态规划做多了以后,总结的相关知识
  7. Terraform学习总结(2)——Terraform 语法详解
  8. loadrunner——关联
  9. 发布一个 host 管理插件
  10. 【QT学习之路】QThread的简单使用
  11. html和css设计网页实例,经典网页设计:30个创意的 CSS 应用案例
  12. 如何查看浏览器cookie?附2个方法
  13. 华为网络设备交换机路由器查看日志命令方法
  14. 使用工具YUMI制作多系统启动盘
  15. 计算机公式固定数值符号,【2人回答】Excel如何锁定,如何Excel某计算公式中锁定其中一个数值?-3D溜溜网...
  16. 周杰伦是怎么凌空闪现今年春晚的?
  17. APM直升机调试记录
  18. 虾米播播音乐墙html,虾米音乐外链,免费外链音乐,博客免费播放器
  19. 2022-02-09 Android setLayoutParams动态修改RelativeLayout控件layout_width、layout_marginTop等。实际应用实例:控件随手指移动。
  20. paired-end reads的拼接

热门文章

  1. 历史文章之自然语言处理
  2. 一文了解机器学习以及其相关领域(下)
  3. pyspark 学习笔记——pyspark安装
  4. 机器学习9-案例1:银行营销策略分析
  5. 从零实现深度学习框架——N-Gram语言模型(二)
  6. 知识图谱研讨实录09丨肖仰华教授带你读懂知识图谱语言认知
  7. Spark与深度学习框架——H2O、deeplearning4j、SparkNet
  8. 《大数据——大价值、大机遇、大变革》试读
  9. “李刚畅谈Java编程人生”讲座
  10. 免费讲座:网站运营之人性、策略与实战