当前位置: 首页 > article >正文

C++之深拷贝和浅拷贝*

两者本质:


浅拷贝:简单的赋值拷贝操作

深拷贝:在堆区中重新申请空间,进行拷贝操作new & delete

注意事项:堆区是在地址中重新申请空间,所以后续一系列操作new delete是通过指针* age进行操作(解决拷贝操作中指针复制时,产生的堆区指针地址重复释放的问题)

 有参构造:指针需要手动开辟堆区new

 

 拷贝操作:

1.参数格式

2.开辟内容int *(主要看传入的是什么)

 

#include<iostream>
using namespace std;

class Person
{
public:

	int age;
	int *weight;

	//有参构造
	Person(int a,int w){
		age = a;
		weight = new int(w);    //指针属性要手动开辟new!!!!
		cout << "有参构造" << endl;
	}

	//拷贝操作
	//const防止对引用数据的意外修改
	Person(const Person &p)
	{
		//浅拷贝
		/*age = p.age;
		weight = p.weight;*/

		//深拷贝
		age = p.age;
		weight = new int(*p.weight);//new一个体重指针int大小的堆区
	}

	//析构函数
	~Person()
	{
		if (weight != NULL)
		{
			delete weight;
			weight = NULL;
		}
		cout << "Person析构函数调用" << endl;
	}

	
};
//int main()
//{
//	Person p1(22, 90);
//	cout << "p1的年龄和体重" << p1.age << " " << *p1.weight << endl;
//
//	Person p2(p1);
//	cout << "p2的年龄和体重" << p2.age << " " << *p2.weight << endl;
//
//
//	system("pause");
//	return 0;
//}


http://www.kler.cn/news/313762.html

相关文章:

  • Linux —— 多线程
  • 三分钟 ChatGPT 接入钉钉机器人
  • 云服务器和物理服务器的区别在哪
  • 第一次安装Pytorch
  • python爬虫初体验(二)
  • Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
  • .ideavimrc在idea打不开
  • 基于NLP的对话系统开发:从零构建智能客服机器人
  • Android 如何使用jdk命令给应用/APK重新签名。
  • 云栖大会Day1:云应用开发平台 CAP 来了
  • pythonnet python图像 C# .NET图像 互转
  • FLUX.1+ComfyUI部署与使用:图像合成技术的新高度
  • 【JAVA开源】基于Vue和SpringBoot的在线文档管理系统
  • oracle dblink的使用并举例
  • Spring AOP的应用
  • 【计算机网络 - 基础问题】每日 3 题(十三)
  • 面试八股--stram 中map和flatmap的区别
  • 关于 NLP 深度学习的核心流程
  • 虚拟现实与PD协议快充
  • thinkphp 做分布式服务+读写分离+分库分表(分区)(后续接着写)
  • 【网络安全的神秘世界】攻防环境搭建及漏洞原理学习
  • LeetCode 459.重复的子字符串
  • 计算机网络分类
  • Ubuntu 22.04 源码下载、编译
  • 经典sql题(二)求连续登录最多天数用户
  • 将编程融入日常生活:编程游戏化学习
  • 内网穿透软件有哪些?
  • 搜维尔科技:工程师已经解决OptiTrack捕捉过程中肘部不自然的弯曲
  • 十五,Spring Boot 整合连接数据库(详细配置)
  • 金仓数据库 KingbaseES参考手册-(8.函数(三))