由于数组没有构造函数或析构函数,也没有公共的非静态成员变量,数组如何允许花括号初始化?不允许尝试初始化以下类型:
class Test{
var choices = [
["ABC", "AAB", "ACD"], // 1st qns has 3 choices
["AND", "CQA", "QWE", "QAL"], // 2nd qns has 4 choices
["ASD", "JUS", "JSB"] // 3rd qns has 3 choices
];
}
我该如何以一种可以初始化的方式编写这种类型,而无需任何构造函数或析构函数来保持该类型易于构造和破坏,并且不暴露私有数组成员?
答案 0 :(得分:5)
{em>隐式声明了std::array
的构造函数。
假设std::array
被定义为
template<
class T,
std::size_t N
> struct array;
它仅包含一个具有T[N]
访问权限的成员public
。
因此,可以通过编写用于聚合初始化的适当语法(即使用花括号)来初始化std::array
。