当我声明一个数组时,所有变量/对象都被声明.但是对象会发生什么,如果他们的类有构造函数?我正在使用的类有2个构造函数 - 一个没有参数,一个有一些参数.声明后第一个构造函数是否会激活?或者没有构建器会激活?
如果第一种情况发生,我将不得不创建一个替换构造函数的函数.
那么,新声明的数组中的对象会发生什么?
这取决于你如何声明数组.成员将是默认值,值或复制初始化:
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调用默认构造函数.复制初始化可以直接调用适当的构造函数.
如果您不想使用默认构造函数,则不会使用大括号初始化程序并拼写出每个成员.