详解C++11特性(上)-2. 列表初始化

2.1 { }初始化

相信大家在初始化数组和结构体的时候,都使用过{}进行初始化

struct Date
{
	int y;
	int m;
	int d;
};
int main()
{
	int array1[] = { 1, 2, 3, 4, 5 };
	int array2[5] = { 0 };
	Date d = { 2024, 3,31 };
	return 0;
}

到了C++11,{}初始化的范围变大了,使其可用于所有的内置类型和用户自定义的类型。

class Person
{
public:
	Person(string name,string gender,int age)
		:_name(name)
		,_gender(gender)
		,_age(age)
	{}
private:
	string _name;
	string _gender;
	int _age;
};
int main()
{
	//不推荐
	int a = { 1 };

	vector<Person> v = { {"张三","男",20},{"李四","女",20}};
	map<string, int> m = { {"苹果",1},{"香蕉",2} };
	return 0;
}

2.2 initializer_list

其实支持这种操作的原因就是initializer_list的引入,可以把initializer_list看出一个模版类,{}就可以看作是initializer_list类,所以C++11的STL容器的构造都加了以initializer_list为参数的构造函数。
在这里插入图片描述

上一篇:前端:css less语法 /deep/ 深度影响的用法


下一篇:JavaScript基础