首页 > 解决方案 > 有时课程必须“默认复制c'tor”?当我做“新类型[..]”时会发生什么?

问题描述

以下行会发生什么:

Type* arr=new Type[20];  

类型Type必须copy constructordefault constructordefault copy constructor

再一次,在这一行中调用了哪个方法?

标签: c++c++11

解决方案


当你说:

 Type* arr=new Type[20];  

然后有足够的内存来容纳 20 个类型的对象Type。被分配。然后调用默认构造函数Type20 次来构造每个Type实例。如果 , 没有默认构造函数Type(如果您定义了其他构造函数则不会有),则无法构造这些实例。

std::vector容器没有这个限制,因为您可以为其初始化提供参数,或者动态创建对象并在创建矢量后将它们推入std::vector。这是您应该始终更喜欢std::vector通过new.


推荐阅读