有些时候,阶级必须"default copy c'tor" ?当我做"new Type[..]"时会发生什么?
There are times so that class must "default copy c'tor" ? and what is happens while I doing "new Type[..]"?
以下行会发生什么:
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
分配数组的众多原因之一。
相关文章:
- 如果"new int"返回"int*",那么为什么"new int[n]"不返回"int**"?
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 重载运算符new[]的行为取决于析构函数
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 过载'operator new'如何导致无限循环?
- 创建具有 new in 函数和"this is nullptr"异常的对象
- Codelite C++ new project
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类c++中使用new声明数组
- g++用户定义的动态链接库上的全局new和delete运算符
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 有些时候,阶级必须"default copy c'tor" ?当我做"new Type[..]"时会发生什么?
- QQuickView new-delete-type-mismatch
- 让编译器告诉哪些方法不具体,而不是错误'invalid new-expression of abstract class type'
- "new (expr-list) type"操作的含义和示例
- 我可以分辨出在C++中使用"new type[n]"创建的数组的大小吗?
- C ++与"pointer = new type []"相比,"pointer = new type"是什么?
- new(size, value) Type[0]返回的指针是否合法,是否可以用来构建数组?