使用命名空间的范围

bit*_*ion 2 c++ namespaces

运行以下代码段后,输出为

外.
内.
内.

我知道这是关于"命名空间"的用法,但不明白为什么"Inner :: message()"的调用打印出"内部".谢谢你的解释.

#include <iostream>
using namespace std;
namespace Outer
{ 
    void message( );
    namespace Inner
    {  
        void  message( );
    }
}
int main( )
{ 
    Outer::message( );
    Outer::Inner::message( );

    using namespace Outer;
    Inner::message( );

    return 0;
}

namespace Outer
{   

    void message( )
    { 
        cout<< "Outer.\n";
    }
    namespace Inner
    { 
        void message( )
        {
            cout << "Inner.\n";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Sio*_*vok 11

这很有道理.您正在使用命名空间Outer.在命名空间内Outer你有两个成员......

  • void message();
  • void Inner::message();

你在Inner那里明确地限定并调用了消息.你为什么不这么想?如果你没有明确地限定Inner,那么它会调用void Outer::message();.