• 二义性


    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    namespace LOL
    {
        int swkId = 1;
    }
    
    void test01()
    {
        int swkId = 2;
    
        using LOL::swkId;        //写了using声明后,下面这行代码说明以后看到的swkId是LOL命名空间下的
                                //但是编译器又有就近原则,就产生了二义性
        cout << swkId << endl;    //二义性报错
    }
    int main()
    {
        test01();
        system("Pause");        //阻塞功能
        return EXIT_SUCCESS;    // 返回正常退出
    }

    结果:

    避免二义性

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    namespace LOL
    {
        int swkId = 1;
    }
    
    namespace King
    {
        int swkId = 3;
    }
    
    void test01()
    {
        int swkId = 2;
        using namespace LOL;        //写了using声明后,只是打开了命名空间 没有使用,不会产出二义性
                                
        cout << swkId << endl;        //就近原则 输出: 2
    }
    int main()
    {
        test01();
        system("Pause");        //阻塞功能
        return EXIT_SUCCESS;    // 返回正常退出
    }

    使用多个命名空间下字段

    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    using namespace std;
    
    namespace LOL
    {
        int swkId = 1;
    }
    
    namespace King
    {
        int swkId = 3;
    }
    
    void test01()
    {
        using namespace LOL;        //写了using声明后,只是打开了命名空间 没有使用,不会产出二义性
        using namespace King;        //多个命名空间下相同字段名,产出二义性
        //cout << swkId << endl;        //报错
        cout << LOL::swkId << endl;        //使用指定命名空间下的变量
    }
    int main()
    {
        test01();
        system("Pause");        //阻塞功能
        return EXIT_SUCCESS;    // 返回正常退出
    }
  • 相关阅读:
    【JLOI 2015】城池攻占
    【BalticOI 2004】Sequence
    罗马游戏
    《STL源码剖析》STL迭代器分类
    《Effective C++》模版与泛型编程
    《Effective C++》继承与面向对象设计
    《Effective C++》实现 章节
    [C++]const_cast,dynamic_cast,reinterpret_cast,static_cast转型
    [C++]default constructor默认构造函数
    [C++]union联合体总结
  • 原文地址:https://www.cnblogs.com/yifengs/p/15086403.html
Copyright © 2020-2023  润新知