2.1 常量
nullptr 关键字,专门用来区分空指针、0。而 nullptr 的类型为 nullptr_t,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。
constexpr 让用户显式的声明函数或对象构造函数在编译器会成为常量表达式。
从 C++14 开始,constexptr 函数可以在内部使用局部变量、循环和分支等简单语句
2.2 变量及其初始化
if/switch 变量声明强化 可以在 if 和 switch 语句中声明一个临时的变量
std::initializer_list 初始化列表 ,允许构造函数或其他函数像参数一样使用初始化列表,这就为类对象的初始化与普通数组和 POD 的初始化方法提供了统一的桥梁。 初始化列表除了用在对象构造上,还能将其作为普通函数的形参
2.3 类型推导
auto 进行类型推导 不能用于函数传参 不能用于推导数组类型
decltype decltype(表达式) 解决了 auto 关键字只能对变量进行类型推导的缺陷 std::is_same 用于判断 T 和 U 这两个类型是否相等
尾返回类型推导 利用 auto 关键字将返回类型后置
decltype(auto) 主要用于对转发函数或封装的返回类型进行推导,它使我们无需显式的指定 decltype 的参数表达式
2.4 控制流
if constexpr 允许在代码中声明常量表达式的判断条件
区间 for 迭代 for (auto element : vec) for (auto &element : vec)
2.5 模板
2.6 面向对象
委托构造 使得构造函数可以在同一个类中一个构造函数调用另一个构造函数,从而达到简化代码的目的
using 继承构造函数
当重载虚函数时,引入 override 关键字将显式的告知编译器进行重载,编译器将检查基函数是否存在这样的虚函数,否则将无法通过编译
显式禁用默认函数 允许显式的声明采用或拒绝编译器自带的函数
Magic() =default;//显式声明使用编译器生成的构造
Magic&operator=(constMagic&) =delete;//显式声明拒绝编译器生成构造
强类型枚举 枚举类(enumaration class),并使用 enum class 的语法进行声明。这样定义的枚举实现了类型安全,首先他不能够被隐式的转换为整数,同时也不能够将其与整数数字进行比较,更不可能对不同的枚举类型的枚举值进行比较。但相同枚举值之间如果指定的值相同,那么可以进行比较
网友评论