在C++11中,聚合类可以列表初始化,一个聚合类的条件有:
- 所有成员都是public
- 没有定义构造函数
- 没有类内初始值
- 没有基类,也没有虚函数
其中“没有类内初始值”这条,在C++14中已经废止, 如:
struct Person{
std::string name;
int height = 0;
};
int main(){
Person person={"xiaohong",10};
std::cout << person.name<<" "<<person.height << std::endl;
system("pause");
return 0;
}
以上代码用 g++ ... -std=c++11编译报错, 用g++ ... -std=c++14就没问题。
https://stackoverflow.com/questions/18184096/c11-struct-initialization-compilation-error