zoukankan      html  css  js  c++  java
  • C++进阶--命名空间和关键字using

    //############################################################################
    /*
     * C++关键字:using 
     *
     * 1. using指示: 将命名空间所以成员引入当前作用域
     *   例子:  
     */
       using namespace std;
    
    
     /* 2. using声明
      *   a. 将一个特定命名空间成员引入当前作用域
      *   b. 将一个成员从基类引入当前类的作用域
      *   例子:
      */
       using std::cout;
       cout << "Hello world.
    ";
    
    
    
    
    
    using namespace std;  // case 1, global scope
    using std::cout;     // case 2.a, gloabal scope
    
    class B {
       public:
       void f(int a);
    };
     
    class D : private B { 
       public:
          void g() { 
             using namespace std;  // case 1, local scope
             cout << "From D: 
    ";
          }
          void h() { 
             using std::cout;     // case 2.a, local scope
             cout << "From D: 
    ";
          }
          using B::f;   // case 2.b,  class scope
    };
    
    D d;
    d.f(8);
    
    /* Notes:
     * 1. using声明和using指示用于命名空间时,可以在全局或者局部作用域
     * 2. using声明当用于类成员时,可以用于类作用域。下面是一个使用例子
     */
    
    
    class B {
       public:
          void f(int a);
    };
     
    class D : public B { 
       public:
          using B::f;
          void f();     //先从最近的派生类搜索,命中之后就停止搜索,再检查参数是否匹配
    };
    
    int main() {
       D d;
       d.f(8);      //编译错误,可通过加using B::f修复;
    }
    
    
    
    /*
     * 匿名的命名空间
     */
    static void h() { std::cout << "h()
    "; }
    
    void g() { std::cout << "global g()
    "; }
    namespace {
        void g() { std::cout << "g()
    "; }       //匿名命名空间中的所有东西,都可以在本文件中被访问
       void h() { std::cout << "h()
    "; g(); }  //调用本地的g()
    }
    
    int main() {
       h();
    }
    
    
  • 相关阅读:
    HDU5586 最大连续和 xingxing在努力
    HDU5587 递推式+二分 xingxing在努力
    HDU2639 第k小01背包 xingxing在努力
    Java面向对象之继承
    Java面向对象之封装
    Java面向对象之封装
    Java流程控制语句
    Java流程控制语句
    Java运算符
    Java运算符
  • 原文地址:https://www.cnblogs.com/logchen/p/10176935.html
Copyright © 2011-2022 走看看