下面是关于C++聚合体初始化(Aggregate Initialization)的完整攻略。
聚合体之一:POD类
POD类(Plain Old Data)是指没有用户自定义的构造器、析构器、虚函数以及其它不依赖编译器实现的特殊成员函数的类。POD类是C++98/03标准中的概念,从C++11标准开始被拆分成了更多的概念。
示例
下面是一个POD类的例子,它的成员变量均为基本数据类型:
struct POD {
int a;
double b;
char c;
};
你可以使用聚合初始化语法来初始化POD类:
POD pod1 = {1, 2.0, 'c'};
这里对于成员变量的初始化顺序是其在类定义中的声明顺序,因此a
会被初始化为1,b
会被初始化为2.0,c
会被初始化为'c'。
聚合体之二:数组
示例
对于数组,聚合初始化语法的形式为:
int arr[3] = {1, 2, 3};
这样就可以将数组中的元素分别初始化为1、2、3。
如果数组的元素是聚合体,则聚合初始化的语法与上面介绍的POD类的语法相同。
struct Foo {
int a;
int b;
};
Foo arr_foo[2] = {{1, 2}, {3, 4}};
这个例子中,arr_foo
是一个包含两个Foo
元素的数组。第一个元素的a
成员被初始化为1,b
成员被初始化为2;第二个元素的a
成员被初始化为3,b
成员被初始化为4。
注意:聚合初始化语法要求所有的元素必须有初始值,并且用花括号括起来,每个元素的初始值用逗号分隔。此外,花括号中的初始化值的数量不能多于数组的长度,否则会发生编译错误。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++聚合体初始化aggregate initialization详细介绍 - Python技术站