首页  >  文章  >  后端开发  >  C 构造函数可以直接在成员初始化列表中初始化数组吗?

C 构造函数可以直接在成员初始化列表中初始化数组吗?

Susan Sarandon
Susan Sarandon原创
2024-11-14 12:59:02455浏览

Can C   Constructors Initialize Arrays Directly in Member Initializer Lists?

在构造函数初始值设定项列表中初始化数组成员

无法使用成员初始值设定项列表在构造函数中初始化数组会引发有关基本规则和可能的问题

C 03 标准和聚合初始化

C 03 标准禁止在成员初始值设定项列表中对聚合类型(包括数组)使用直接初始化。直接初始化是指直接使用带有括号的构造函数,如提供的代码片段中所示。

Boost::array 作为解决方案

另一种方法是使用封装数组的结构体。通过在结构中定义构造函数,您可以在创建对象时初始化数组。这与 Boost::array 库采用的方法类似。

C 11 列表初始化

C 11 引入了列表初始化,它允许直接初始化聚合,包括数组,在成员初始值设定项列表中。但是,问题中提到的语法不正确。要使用列表初始化,必须将数组元素括在大括号内:

class C
{
public:
    C() : arr{1, 2, 3} {}
};

此语法在构造函数中正确初始化 arr 数组。

以上是C 构造函数可以直接在成员初始化列表中初始化数组吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn