zoukankan      html  css  js  c++  java
  • 09C++11保证稳定性和兼容性

    1. long long 整型

    ​ c++ 中,在进行隐式类型转换时,一般按照低等级整型转换成高等级整型(长度越大的等级越高、相同大小的有符号类型和无符号类型的等级相同),有符号的转换为无符号。

    2. 静态断言

    ​ 在 c++ 中,标准在 <cassert> 或者 <assert.h> 头文件中为程序员提供了 assert 宏,用于在运行时进行断言。

    ​ 通过预处理指令 #if 和 #error 的配合,也可以让程序员在预处理阶段进行断言。

    ​ c++11 引入的静态断言 static_assert 可以用来在编译时做一些断言。static_assert 接收两个参数,一个是断言表达式,这个表达式通常需要返回一个 bool 值;一个则是警告信息,它通常也就是一段字符串。当断言表达式结果为false,则会打印提示信息。

    static_assert(sizeof(int) == 8, "This 64-bit machine should follow this!");
    int main()
    {
        return 0;
    }
    

    ​ 必须注意的是, static_assert 的断言表达式的结果必须是在编译时期可以计算的表达式,及必须是常量表达式。如果使用了变量,则会导致错误。

    int positive(const int n)
    {
        static_assert(n>0, "value must >0");
    }
    
    3. noexcept 修饰符与 noexcept 操作符 (略)

    ​ noexcept,表示其修饰的函数不会抛出异常。在 c++11 中,如果 noexcept 修饰的函数抛出了异常,编译器可以选择直接调用 std::teminate() 函数来终止程序的运行,这比基于异常机制的 throw() 在效率上会高一些.....

    4. 扩展的 friend 语法

    ​ c++11 中,声明友元类的时候可以省略 class 关键字,并且也可以使用 typedef 声明的类。这样的改动,使得程序员可以为类模板声明友元了。

    class P;
    template <typename T> class People
    {
        friend T;    
    }
    People<p> PP;  //类型P在这里是People类型的友元
    People<int>	  //对于 int 类型模板参数,友元声明被忽略
    
    5.override 关键字

    ​ 如果派生类在虚函数声明时使用了 override 描述符,那么该函数必须重载器基类中的同名函数,否则代码将无法通过编译。

    ​ ——如果某子类中的函数接口后面添加了 override 关键字,则表示该接口是对基类虚接口的一个重载。

    6. 模板函数的默认模板参数

    ​ c++11 中,模板类和模板参数都允许有默认模板参数。

    void defParm(int m=3){}
    template <typename T = int>
    class DefClass(){};
    template <typename T = int>
    void defTempParm(T a);
    

    ​ 不过在语法上,与类模板有些不同的是,在为多个默认模板参数声明制定默认值的时候,程序员必须遵照“从右往左”的规则进行指定。而这个条件对函数模板来说并不是不是必须的。

    template<typename T1, typename T2 = int> class DefClass1;
    template<typename T1 = int, typename T2> void defFunc1(T1 a, T2 b);
    

  • 相关阅读:
    让HTML5来为你定位(转)
    Web开发者应知的URL编码知识(转)
    Web开发:URL编码与解码(转)
    用virtualenv建立多个Python独立开发环境(转)
    使用Ajax方式POST JSON数据包(转)
    俞敏洪:我和马云就差了8个字...(转)
    HTTP返回码中301与302的区别(转)
    Postgresql 正则表达式(转)
    【双十一狂欢,一触即发!】安全圈的学习节|绝对省钱攻略
    安全运维中基线检查的自动化之ansible工具巧用
  • 原文地址:https://www.cnblogs.com/rock-cc/p/13335783.html
Copyright © 2011-2022 走看看