在构造函数初始值设定项列表中初始化数组成员
无法使用成员初始值设定项列表在构造函数中初始化数组会引发有关基本规则和可能的问题解决方案。
C 03 标准和聚合初始化
C 03 标准禁止在成员初始值设定项列表中使用聚合类型(包括数组)的直接初始化。直接初始化是指直接使用带有括号的构造函数,如提供的代码片段中所示。
Boost::array 作为解决方案
另一种方法是使用封装数组的结构体。通过在结构中定义构造函数,您可以在创建对象时初始化数组。这与 Boost::array 库采用的方法类似。
C 11 列表初始化
C 11 引入了列表初始化,它允许直接初始化聚合,包括数组,在成员初始值设定项列表中。但是,问题中提到的语法不正确。要使用列表初始化,必须将数组元素括在大括号内:
class C { public: C() : arr{1, 2, 3} {} };
此语法在构造函数中正确初始化 arr 数组。
以上是C 构造函数可以直接在成员初始化列表中初始化数组吗?的详细内容。更多信息请关注PHP中文网其他相关文章!