目录
一、C++11简介
小故事:
1998年是C++标准委员会成立的第一年,本来计划以后每5年实际需要更新一次标准,C++国际标准委员会在研究C++ 03的下一个版本的时候,一开始计划是2007年发布,所以最初标准叫C++ 07。但是到06年的时候,官方觉得2007年坑定完不成C++ 07,而且官方觉得2008年可能也玩不成。最后干脆叫C++ 0x。x的意思是不知道到底能在07还是08还是其他年完成。结果2010年的时候也没完成,最后在11年终于完成了C++标准。所以最终定名为C++ 11。
C++11相对98/03,带来了数量可观的变化,其中包含约140新特性,以及对03标准约600个缺陷的修正,其次,11能更好地用于系统开发和库开发、语法更加范化和简单化、更加稳定和安全,不仅功能更强大、而且能提升程序员的开发效率,企业中项目开发中也用得比较多,所以需要重点学习。C++11的特性很多,只需挑重点进行学习。
二、列表初始化
2.1{}初始化
在c++98中,标准规定{}只能对数组或者结构进行初始化。
而在c++11中,{}不仅兼容98的规定,还可以对内置类型和自定义类型进行初始化,可添加等号(=),也可不添加。例子:
内置类型:
#include <iostream>
using namespace std;
int main()
{
int a{ 1 };
int b = { 3 };
cout << a << endl << b << endl;
int arr[]{ 1,2,3,4,5 };
int brr[] = { 32,3,5,42,1 };
for (auto e : arr)
{
cout << e;
}
cout << endl;
for (auto e : brr)
{
cout << e;
}
return 0;
}
输出结果:
自定义类型:
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year, int month, int day)
:_year(year)
, _month(month)
, _day(day)
{}
void Print()
{
cout << _year << ":" << _month << ":" << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d{ 2024,6,12 };
d.Print();
Date d2 = { 2024,6,12 };
d2.Print();
return 0;
}
输出结果: