类的动态分配new/delete

本文介绍了C++中的动态内存管理,包括new和delete操作,以及动态分配数组的方法。同时,深入探讨了浅复制和深复制的概念,强调了浅复制可能导致的双指针指向同一内存的问题,以及如何通过重写拷贝构造函数实现深复制。此外,还提到了函数参数传递时的拷贝行为对深浅复制的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概念

类比于学习指针的时的mallocfree

new返回的是一个数据类型或者类的指针变量

2. 语法

指针变量=new 数据类型或者类名();//相当于构造函数的使用
delete 指针变量;指针变量=nullptr;//一般删除空间之后习惯把指针变为空指针,避免后续不安全的麻烦

2.1 数组的动态分配

ptr_array=new int[40];
delete[] ptr_array;//如果没有中括号删除的是元素0

3. 浅复制和深复制

  • 浅复制:类中的基础数据变量进行值的复制,指针变量也只是复制出另外一个指针变量,并没有开辟新的内存空间;(造成的效果:会有两个指针变量指向同一个内存地址
  • 深复制:返回的指针变量是new出来的一个指针变量,会有额外的内存空间给他指向,并且内存空间带的数据相同;(需要自己重写拷贝构造函数,缺省时默认为浅复制
  • PS:在函数传参的时候会发生一次拷贝,这节跟浅复制和深复制有关了;

3.1 拷贝构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值