C++11|列表初始化 && 声明

目录

一、C++11简介

二、列表初始化

2.1{}初始化

 2.2std::initializer_list

2.2.1原理 

 2.2.2使用场景

 三、声明

3.1auto && typeid().name()

3.2decltype 


 

一、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;
}

输出结果:

 2.2std::initializer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值