0 前言
初始化列表作为C++11引入的特性,不仅用于初始化变量,还可以用于初始化结构体,如
struct Point
{
int x;
int y;
};
void using_initial_list()
{
//初始化变量
auto channel_num{
10 };
//初始化聚合体
Point p{
10, 30 };
std::vector<int> vec{
1,2 };//contains two elements, 1 and 2;
}
其中结构体Point就是聚合体,那么聚合体是什么呢,
1.聚合体
1.1 聚合体定义
聚合体是一种数据类型,其可以是:
可以是数组
还可以是具有如下特性的类类型(含class、struct、union),
- 没有用户声明、用户提供、explicit的构造函数(情形1)
- 没有继承的构造函数(情形2)
- 所有成员都是公有的(没有私有/受保护的非静态数据成员)(情形3)
- 没有虚函数(情形4)
//情形1
class People
{
public:
std::string m_name;
int m_age;
//People(std::string name, int age):m_name(name),m_age(age){}//非聚合体
//People(){}//非聚合体
};
//情形2
class Base {
public:
Base(int i, int j){
};
int i =10;
int j =30;
};
class People:public Base//非聚合体
{
public:
std::string m_name;
int m_age;
};
//情形3:
class