首页 > 后端开发 > C++ > 如何初始化成员初始化列表中的数组成员?

如何初始化成员初始化列表中的数组成员?

Barbara Streisand
发布: 2024-11-29 02:07:08
原创
521 人浏览过

How to Initialize an Array Member in a Member Initializer List?

如何在成员初始化器列表中初始化数组成员

简介

初始化成员初始值设定项列表中的数组成员看起来像是一项简单的任务,但在实践中可能很困难。本文将探讨不同的方法并回答与此主题相关的常见问题。

问题和代码

以下代码片段尝试在构造函数的初始值设定项中初始化数组成员list:

class C {
public:
    C() : arr({1,2,3}) //doesn't compile
{}
private:
    int arr[3];
};
登录后复制

但是,代码无法编译。原因是数组只能使用赋值运算符=来初始化,如:

int arr[3] = {1,3,4};
登录后复制

解决方案

  • 使用Struct:

一种解决方案是使用结构体来封装数组,允许它在构造函数中初始化。这本质上就是 Boost.Array 库的作用。

  • 使用列表初始化:

C 11 引入了列表初始化,可用于初始化成员初始值设定项列表中的数组。以下代码可以工作:

class C {
public:
    C() : arr{1, 2, 3} { }
private:
    int arr[3];
};
登录后复制

C 03

C 03 标准没有专门解决构造函数初始值设定项中聚合(包括数组)的初始化。原始代码的无效性是直接初始化规则的结果,该规则禁止对数组使用初始化器列表。

C 11

C 11 的列表初始化语法简化了成员初始化列表中数组的初始化。但是,使用正确的语法很重要,如上所示。

以上是如何初始化成员初始化列表中的数组成员?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板