构造函数中的成员数组初始化
考虑以下 C 类:
class C { public: C() : arr({1, 2, 3}) {} // C() : arr{1, 2, 3} {} private: int arr[3]; };
代码尝试初始化arr 构造函数的成员初始值设定项列表中的数组成员。但是,它无法编译。
问题:
答案:
1。构造函数中的数组初始化
是的,可以在构造函数的成员初始值设定项列表中初始化数组。但是,它需要一个中间结构:
struct A { int foo[3]; A(int a, int b, int c) : foo{a, b, c} {} }; class C { public: C() : foo(A(1, 2, 3)) {} private: A foo; };
2。 C 03 标准
C 03 标准没有明确解决成员初始值设定项列表中数组的初始化。但是,直接初始化的一般规则禁止使用大括号初始化数组。
3. C 11 列表初始化
C 11 引入了列表初始化,它允许使用大括号直接初始化数组:
class C { public: C() : arr{1, 2, 3} {} private: int arr[3]; };
在这种情况下,直接在数组名称后面使用大括号的语法有效并在构造函数的成员初始值设定项列表中初始化数组。
以上是数组可以在构造函数的成员初始化列表中初始化吗?的详细内容。更多信息请关注PHP中文网其他相关文章!