【C++】C++11--- 列表初始化|关键字

目录

前言

列表初始化

创建对象时的列表初始化

单参数隐式类型转换

多参数的隐式类型转换

new表达式中使用列表初始化

列表初始化适用于STL 容器

模板类initializer_list

关键字auto

关键字decltype

关键字nullptr


前言

C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟,相比于C++98,C++11带来了数量可观的变化,其中包含了约140个新特性,以及对C++98标准中约600个缺陷的修正,这使得C++11更像是从C++98中孕育出的一种新语言;相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更加强大,而且能提升程序员的开发效率;

官方文档:C++11 - cppreference.com

列表初始化

C++98中,标准允许使用花括号{}对数组元素或者结构体元素进行统一的列表初始值设定;

struct person
{
	const char* name;
	int age;
};
int main()
{
	int array1[] = { 1, 2, 3, 4, 5 };
	//整型数组未指定初始化内容,按照默认值0初始化数组未指定的内容
	int array2[3] = { 1 };
	person p = { "Linda", 23 };
	return 0;
}

监视窗口:

【C++】C++11--- 列表初始化|关键字_第1张图片

C++11扩大了{}(初始化列表)的使用范围,使其可用于所有的内置类型与自定义类型,使用初始化列表时,可以添加等号,也可以不添加;

struct person
{
	const char* name;
	int age;
};
int main()
{
	int array1[]{ 1, 2, 3, 4, 5 };
	//整型数组未指定初始化内容,按照默认值0初始化数组未指定的内容
	int array2[3]{ 1 };
	person p{ "Linda", 23 };
	return 0;
}

监视窗口:

【C++】C++11--- 列表初始化|关键字_第2张图片

创建对象时的列表初始化

class Date
{
public:
	//构造函数
	Date(int year,int month,int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{
		cout << "调用构造函数" << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date d2(2024, 6, 1);//c++ 98
	Date d1 = { 2024,5,1 };//c++ 11 (不推荐使用)
  	return 0;
}

运行结果:

单参数隐式

你可能感兴趣的:(c++,开发语言,C++11)