C++11新特性(45)- 和动态数组相关的新特性

xiaoxiao2021-02-28  41

我们通常称使用new T[]形式分配的内存为动态数组,C++11中包含一些和动态数组相关的特性。 使用初始化列表初始化 可以像一般的数组一样,使用初始化列表对动态数组进行初始化,代码如下: 毕竟不是数组 之所以叫动态数组,我猜有两个原因,一个是它的内存是动态分配的,一个就是它可以像数组一样使用: 但是动态数组和数组还是有一些区别,例如编译器无法从数组名获知数组的大小信息。下面的代码就不能正确动作:  同样地,C++11中引入的范围for也被不支持。下面的代码直接会发生编译错误: 一个有趣的例外 但是这件事有一个例外,动态申请的对象数组在释放内存是时,如果需要调用析构函数,编译器会在动态数组的前面保存动态数组的大小信息。例如下面的类: 在动态分配内存之后,可以像下面的代码一样取得数组的大小: 有一点值得注意的是,这个方法有可能依赖于编译器的实现,所以在作者不能保证在所有的编译器中都能正常动作。 补充信息 有关上述例外的说明,可以参照下面的文章: 为什么在调用delete[]时,括号中不需要指明元素的个数? 觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

转载请注明原文地址: https://www.6miu.com/read-2350216.html

最新回复(0)