C++11新特性(45)- 和动态数组相关的新特性
发布日期:2021-07-01 05:34:12 浏览次数:3 分类:技术文章

本文共 508 字,大约阅读时间需要 1 分钟。

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

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

转载地址:https://oothinking.blog.csdn.net/article/details/80903461 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++11新特性(46)- allocator::construct可使用任意构造函数
下一篇:C++11新特性(44)- shared_ptr/weak_ptr示例

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 04时56分14秒