研究学习-C++11/14高级编程+Boost库 ------- 新式的空指针、初始化、for、函数声明

空指针   

typedef    decltype(nullptr)    nullptr_t;

C++11/14新增关键字“nullptr”,解决NULL存在的缺陷(#define NULL 0    实际上是一个整数,而不是真正的指针,有时候会造成语义混淆),nullptr并不是指针,而是一个类型为nullptr_t的编译期常量对象实例

初始化

统一使用{}初始化变量,称为“列表初始化”。例如:

     int   x{1};
     vector<int> c{1,1};

引入新式for循环

 for (auto x : a) {} 
 for (const auto& x : v) {}
声明元素类型是使用auto将推导出类型,有拷贝代价,也不能修改元素,所以可以为auto添加修饰,使用const auto&/auto &&避免拷贝,或者auto&以修改元素的值。在循环中不可以变动容器删减,否则会导致遍历的迭代器失效。

函数声明

C++11/14增加了一种新的函数语法,允许返回值类型后置,使用了auto/decltype的类型推导能力,基本形式:

 auto func(...) -> type {...}

这种方式有什么好处呢?举个例子:

template<typename T, typename U>

auto aaa(T t, U u) -> decltype (t + u)

{ return t + u;}

函数aaa是一个简单的模板函数,但他的返回值类型无法用传统的语法声明,因为返回值类型必须由参数t和u决定,而函数名之前这两个参数还未定义。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值