C++11 笔记20150920

本文深入解析了C++11中引入的几个关键特性:模板表达式内的空格优化、nullptr替代传统指针用法、auto类型推导、一致性初始化与初值列、range-based for循环以及noexcept关键字的使用。
摘要由CSDN通过智能技术生成
C++11语言新特性
1.Template 表达式内的空格
	vector<list<int> >	//OK in each C++ version
	vector<list<int>>	//Ok since C++11
2.C++11 允许你使用nullptr 取代0或者null,用来表示一个pointer(指针)指向所谓的no value.
	void f(int);
	void f(void*);
	
	f(0);		//call f(int)
	f(NULL);	//call f(int) if NULL is 0,ambiguous otherwise
	f(nullptr)	//call f(void*)
	nullptr 是一个新关键字,它被自动转换为各种pointer类型,但不会被转换为任何
	整型类型,它拥有类型std::nullptr,定义于<cstddef>
3.auto 自动类型推导
	vector<int> vecRoadId;
	auto iter = vecRoadId.begin(); 
	//等价于 vector<int>::iterator iter = vecRoadId.begin()
4.一致性初始化(Uniform Initialization)与初值列(InitializerList)
C++11引入了“一致性初始化”概念,意思是面对任何初始化动作,
你可以使用相同语法,也就是使用大括号。
	int values[] {1,2,3};
	std::vector<int> v {1,2,3,4,5};
	int i;		//j has undefined value ;
	int i{};	//j is initialized by 0;
	int* p;		//p has undefined value ;
	int* p{}; 	//p is initialized by nullptr;
		 
	int x1(5.3);	//OK
	int x2 = 5.3;	//OK
	int x3{5.0};	//ERROR
	int x4 = {5.3}	//ERROR
	char c1{7};		//OK	 
	char c2{99999}	//ERROR
5.Range-Based for 循环
	for(decl : coll)
	{
		statement
	}
	for(int i : {1,2,3,4,5,6})
	{
		std::cout<<i<<std::endl;
	}
	std::vector<vector> vec;
	for(auto& elem:vec)
	{
		elem *= 3;
	}
6 关键字 noexcept 用来指明某个函数无法或者不打算抛出异常。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值