c++ - 有时课程必须“默认复制c'tor”?当我做“新类型[..]”时会发生什么?
问题描述
以下行会发生什么:
Type* arr=new Type[20];
类型Type
必须copy constructor
或default constructor
或default copy constructor
?
再一次,在这一行中调用了哪个方法?
解决方案
当你说:
Type* arr=new Type[20];
然后有足够的内存来容纳 20 个类型的对象Type
。被分配。然后调用默认构造函数Type
20 次来构造每个Type
实例。如果 , 没有默认构造函数Type
(如果您定义了其他构造函数则不会有),则无法构造这些实例。
std::vector
容器没有这个限制,因为您可以为其初始化提供参数,或者动态创建对象并在创建矢量后将它们推入std::vector
。这是您应该始终更喜欢std::vector
通过new
.
推荐阅读
- python - 如何将我的线图变成直方图?
- javascript - 导出的 const 变量在 vue 中未定义
- python - 如何打印 Keras 张量值?
- css - 如何在 HTML Purifier 过滤中允许 CSS
- varnish - 有条件地删除 Varnish Edge-side 中的授权标头包含 (ESI)
- stripe-payments - Stripe 订阅以在付款成功后更新计费周期锚点
- python - Pygame对话框:同时使用透明表面和渐进式打字
- javascript - 为什么 Vue.js 在 Shopify 主题中不起作用?
- sql-server - Pyspark 数据帧写入 sql server 日期时间字段值被更改
- uwp-xaml - 如何使 NavigationViewItem 内容垂直?