美文网首页
语言可用性的强化

语言可用性的强化

作者: 骑鲸公子_ | 来源:发表于2018-05-21 16:37 被阅读0次

    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 的语法进行声明。这样定义的枚举实现了类型安全,首先他不能够被隐式的转换为整数,同时也不能够将其与整数数字进行比较,更不可能对不同的枚举类型的枚举值进行比较。但相同枚举值之间如果指定的值相同,那么可以进行比较

    相关文章

      网友评论

          本文标题:语言可用性的强化

          本文链接:https://www.haomeiwen.com/subject/nhqfjftx.html