IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 第二章 浅拷贝与深拷贝 浅拷贝bug -> 正文阅读

[C++知识库]C++ 第二章 浅拷贝与深拷贝 浅拷贝bug

拷贝构造函数
首先,我们的目标是拿B初始化A
在这里插入图片描述
第一种方法,我们直接给=了在这里插入图片描述
第二种,我们创建一个C,然后把B给扔进去
然后我们再打印C

> class FTestA :public FHello_F{
public:
	FTestA();
	FTestA(int Ina, int intb, int inc);
	~FTestA();
public:
	int a;
	int b;
	int c;
	FTest3* T3;
};
FTestA::FTestA() {
	a = 11;
	b = 13;
	c = 9;
	T3 = new FTest3();

}FTestA::FTestA(int Ina, int intb, int inc):FHello_F(),a(Ina),b(intb),c(inc)
{
	a = Ina;
	b = intb;
	c = inc;
	T3 = new FTest3();
}

FTestA::~FTestA()
{
	if (T3) {
		delete T3;
		T3 = nullptr;
	}
}
const FTestA* TsetA = NULL;

void main() {
	{
		TsetA = new FTestA();
		TsetA = new FTestA();
		 
		FTestA A;
		std::cout << A.a << A.b << A.c << endl;
		FTestA B(1, 2, 3);

		//A = B;
		FTestA C(B);
		std::cout << C.a << C.b << C.c << endl;
}

FTestA C(B);//浅拷贝,它将变量作了内存对齐的赋值,它只会对当前的值进行拷贝
深拷贝
深拷贝是什么意思呢?
在我们进行析构的时候,首先我们会调用当前的析构,那么在第一次析构的时候,就已经把当时的指针给清除了,干掉了,那么在拷贝完过后,第二个赋值过去的B,它是还要对这个指针指向的地址再析构一次的,这个时候就会产生崩溃
在这里插入图片描述
解决方法
在这里插入图片描述
在这里插入图片描述
需要注意的是这样的方法要保证,在FTest3中不能有指针,如果有指针的话必须在里面再进行一次深拷贝
需要加*,不能用指针对指针的赋值,因为这样的方法只是指针指向另外一个具体的内存,所以它的赋值方式得加个*,将他们变成具体的对象,然后对象与对象之间浅拷贝把我们的值拷贝在里面

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:31:35  更:2021-08-18 12:32:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 9:24:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码