C++将具有构造函数的对象添加到数组中

Ale*_*rov 1 c++ arrays object

当我声明一个数组时,所有变量/对象都被声明.但是对象会发生什么,如果他们的类有构造函数?我正在使用的类有2个构造函数 - 一个没有参数,一个有一些参数.声明后第一个构造函数是否会激活?或者没有构建器会激活?

如果第一种情况发生,我将不得不创建一个替换构造函数的函数.

那么,新声明的数组中的对象会发生什么?

Ker*_* SB 8

这取决于你如何声明数组.成员将是默认值,值或复制初始化:

Foo x[] = { Foo(1), Foo(true, 'a'), Foo() };  // copy-initialize
Foo x[3] = { };                               // value-initialize
Foo x[3];                                     // default-initialize
Run Code Online (Sandbox Code Playgroud)

对于类类型,default-和value-initialization调用默认构造函数.复制初始化可以直接调用适当的构造函数.

如果您不想使用默认构造函数,则不会使用大括号初始化程序并拼写出每个成员.