在构造函数中将数组初始化为0 [重复]
Posted
技术标签:
【中文标题】在构造函数中将数组初始化为0 [重复]【英文标题】:initialize array to 0 in constructor [duplicate] 【发布时间】:2017-03-16 10:27:37 【问题描述】:在 C 中,这可以通过以下方式轻松完成
int myArray[10] = 0 ; // all elements 0
(取自this答案)
我的问题是,在 C++ 中是否有类似(或相同)的方法可以用来在构造函数中将数组初始化为 0?
编辑 1
我需要使用初始化列表进行上述操作。
可能是这样的
struct aa
int i[10];
aa() : i 0
;
【问题讨论】:
【参考方案1】:是的。相同的语法适用于 C++,尽管它有不同的名称(列表初始化,或者在这种情况下,它的特殊情况是聚合初始化)。
但是,在成员初始化列表中,您必须使用不同的语法:myArray
。请注意,不需要将第一个元素显式初始化为 0,因为这是默认设置。
【讨论】:
【参考方案2】:这是一个例子
struct A
A() : a
enum N = 10 ;
int a[N];
a;
或者
struct A
A() : a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
enum N = 10 ;
int a[N];
a;
for (int x : a.a) std::cout << x << ' ';
std::cout << std::endl;
另一种方法是使用std::array
类型的对象。例如
#include <array>
//...
struct A
A()
a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
enum N = 10 ;
std::array<int, N> a;
a;
for (int x : a.a) std::cout << x << ' ';
std::cout << std::endl;
【讨论】:
以上是关于在构造函数中将数组初始化为0 [重复]的主要内容,如果未能解决你的问题,请参考以下文章