1. 概念
类比于学习指针的时的malloc
和free
;
new返回的是一个数据类型或者类的指针变量
2. 语法
指针变量=new 数据类型或者类名(值);//相当于构造函数的使用
delete 指针变量;指针变量=nullptr;//一般删除空间之后习惯把指针变为空指针,避免后续不安全的麻烦
2.1 数组的动态分配
ptr_array=new int[40];
delete[] ptr_array;//如果没有中括号删除的是元素0
3. 浅复制和深复制
- 浅复制:类中的基础数据变量进行值的复制,指针变量也只是复制出另外一个指针变量,并没有开辟新的内存空间;(造成的效果:会有两个指针变量指向同一个内存地址)
- 深复制:返回的指针变量是new出来的一个指针变量,会有额外的内存空间给他指向,并且内存空间带的数据相同;(需要自己重写拷贝构造函数,缺省时默认为浅复制)
- PS:在函数传参的时候会发生一次拷贝,这节跟浅复制和深复制有关了;