• using 关键字在 C++ 中的几种用法


    https://blog.wandoer.com/coding/using-%E5%85%B3%E9%94%AE%E5%AD%97%E5%9C%A8-c-%E4%B8%AD%E7%9A%84%E5%87%A0%E7%A7%8D%E7%94%A8%E6%B3%95.htm#1_using_%E5%A3%B0%E6%98%8E

    对C++中 using关键字的几种用法的总结:

    1. using 声明

    using 声明 (using declaration) 是将命名空间中单个名字注入到当前作用域的机制,使得在当前作用域下访问另一个作用域下的成员时无需使用限定符 ::

    using 声明将其它 namespace 的成员引入本命名空间的 当前作用域 (包括其嵌套作用域)  。一个 using 声明一次只引入一个命名空间成员,它使得无论程序中使用哪些名字,都非常准确。
    利用 using 声明,可以改变派生类对父类成员的访问控制:

    尽管 Derived 对 base 是私有继承,但通过 using 声明,我们还是可以在 Derived 中访问其成员,且后续的继承同样不受 private 限定的影响。

    2. using 指示 (引入命名空间)

    using 指示 (using directive) 是使一个命名空间中的 所有 名字都在该作用域中可见的机制。这是最常用的方式了。需要注意的是命名冲突问题。

    Notice: 尽管 using指示很方便,但在实际工作中应该尽量避免:它一下子将另一个 namespace 中的成员全部引入了,一不小心就会出现命名空间污染问题。

    3. 类型重定义,取代 typedef

    using alias = typename

    这是 C++11 中的新用法,比 typedef 更能表达别名的定义。

    在 C++98/03 中 ,typedef 重定义有一些限制,比如,模板。
    我们想实现这样一个模板:将一个 int 映射到任意类型,类似于我们想表达这种效果:

    我们在 C++98/03 中必须这样写:

    template<typename Val>
    struct int_map{
        typedef std::map<int, Val> type;
    };
     
    int main(){
        int_map<int>::type imap;
     
        return 0;
    }

    在C++11 中,我们可以使用 using 重定义模板

  • 相关阅读:
    linux上运行jmeter-server失败
    转:JMeter整合InfluxDB,Grafana让测试结果实时显示
    转:基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示
    转:Linux下用Jmeter做接口测试
    关于获取IP 电脑获取准确手机获取的IP不准确
    关于MVC微信开发遇到的那些坑。
    uploadify 上传 大文件没有反映
    HTTP 错误 404.3
    关于WEBAPI 的使用 和WEBAPI CORS 的使用过程遇到的问题
    MVC4 ViewModel 存入多个Model,以及前台的显示用法。具体类名可以参数代替
  • 原文地址:https://www.cnblogs.com/Galesaur-wcy/p/14803403.html
Copyright © 2020-2023  润新知