c++ 的new 数组操作
来源:互联网 发布:chrome比价 知乎 编辑:程序博客网 时间:2024/05/02 04:53
今天群里一个朋友问到:
有class A,
1. A* pa = new A[3]
2. pa[0] = A();
3. pa[1] = A();
4. pa[2] = A();
5. delete []pa;
构造函数和析构函数是怎么调用的?
在1里,new A[3] 首先会分配内存,然后调用A的默认构造函数来初始化这个数组。所以
在这里A的构造函数被调用了3次。记住,这里只能调用A的默认构造函数。如果A没有默认构造
函数,那么会有编译错误。 什么叫默认构造函数?就是参数列表为Void的构造函数。
在2-4语句里,产生了三个匿名的临时变量。c++中匿名的临时变量的作用域是该临时变量坐在的表达式。
所以这里会有三个构造函数和三个析构函数
在5里,delete[] 会触发每个数组成员的析构函数,并释放这段内存。所以数组里的每个元素的析构函数
都被调用了一次。
所以大家注意的是, 如果你要删除一个用new分配的数组里的一个成员时,记得要手动调用该对象的
析构函数。这是我在STL的源代码看到的为数不多的需要程序员自己来调用析构函数的例子。
绝大部分情况下,析构函数都是编译器在编译的时候为你插入的(以及你使用delete的时候delete所调用的)。你完全不需要手动来call一个析构函数。
- c++ 的new 数组操作
- 3-3 C++(new、delete的三种方法操作“动态数组”)
- C语言new操作的安全性分析
- C++new数组
- c#new操作符
- new数组的初始化
- c语言对数组的操作CRUD
- c语言螺旋数组的递归操作
- 【c#】c#中 数组 的基本操作
- C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲
- C++new的用法
- C++new的用法
- C++new的用法
- C++new的用法
- C ++的new、delete
- C++new的用法
- C++new的用法
- c++new的用法
- eclipse管理多个workspace
- 生成HTML
- 破解的DbgView献给大家
- 诺基亚手机大全
- 外部图片加载的设计笔录
- c++ 的new 数组操作
- RealView MDK中如何指定子程序入口地址
- 利用CImage进行屏幕截图
- svn 数据库无法访问的解决2
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- 20岁的男人~~~
- ant结合hibernate输出数据库sql语句的build模板
- 英语资源
- shell编程珠玑(1)