0.simple

C++11 的一些简单或不常用的特性

auto

自动类型推到,不语。

decltype

复杂类型定义

map<int,map<int, bool>> a;
decltype(a) b;

配合auto 自动推到返回值

template <typename _Tx, typename _Ty>
auto multiply(_Tx x, _Ty y)->decltype(_Tx*_Ty)
{
    return x*y;
}

nullptr

c++中对NULL的定义

#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif

可见c++ 把 NULL 当成0处理,可能会出问题,比如传指针作为参数,传NULL的话可能被当做0,其中弯弯道道不再赘述。

c++11开始用nullptr 指代空指针。

type aliases 类型别名

代替 typedef ,在模板中巴拉巴拉。

构造函数

可以 = default =delete

可以委托构造,即使用其他构造函数初始化。

override & final 关键字

override 继承的时候显式声明是重载

final 最后一层实现,不能被继续继承

explicit 显示转换

阻止隐式类型转换,如下这种

noexcept

声明不会抛出异常,如果一个异常没有在函数里面被处理,这个函数就会终止这个程序,抛出std::terminate,之后就会调用std::abort。

常量表达式的结果会被转换成一个bool类型的值。该值为true,表示函数不会抛出异常,反之,则有可能抛出异常。这里, 不带常量表达式的noexcept相当于声明了noexcept(true),即不会抛出异常

others

......

最后更新于

这有帮助吗?