namespace

2016-11-01  本文已影响37人  Gxpzy

这是一篇译文原文地址
有时你的代码中可能会有一个叫做xyz()的函数,而另一个库中也有一个相同的xyz()函数。此时编译器无法确定你使用的是哪一个版本的xyz()
命名空间用来克服这个困难并且它作为额外信息来区分不同库中的相同名字,比如相同的函数名,类名,变量等。使用命名空间你可以定义参数在哪个命名中被定义。本质上一个命名空间定义了一个范围。

namespace namespace_name{
    // code declarations
}
#include <iostream>
using namespace std;//下面再解释这个用法
// first name space
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// second name space
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main () {

   // Calls function from first name space.
   first_space::func();  

   // Calls function from second name space.
   second_space::func(); 

   // Calls variable from first name space.
    cout << first_space::space << endl;   

   // Calls variable from second name space.
    cout << second_space::space << endl;

   return 0;
}
// first name space
namespace first_space{
    int space = 1;
    void func(){
        cout << "Inside first_space" << endl;
    }
}
// second name space
namespace second_space{
    int space = 2;
    void func(){
        cout << "Inside second_space" << endl;
    }
}
using namespace first_space;
int main () {
    
    // Calls function from specified name space.
    func();

    return 0;
}

使用指令也可以用来指定命名空间中特殊的项,例如std namespace中你只想使用cout你可以这样指定它:using std::cout
随后的代码不用再加上命名空间就可以指定cout,但是std中的其它项还是需要明显的加上std命名空间

#include <iostream>
using std::cout;
int main () {  
   
    cout << "std::endl is used with std!" << std::endl;
    
    return 0;
}
namespace namespace_name {
    // code declarations
}
namespace namespace_name1 {
    // code declarations
    namespace namespace_name2 {
        // code declarations
    }
}

你可以使用结果操作符来获得嵌套的命名空间

// to access members of namespace_name2
using namespace namespace_name1::namespace_name2;
// to access members of namespace:name1
using namespace namespace_name1;

在以上语句中当你使用namespace_name1,namespace_name2中的元素也可以使用

#include <iostream>
using namespace std;
// first name space
namespace first_space{
    void func(){
        cout << "Inside first_space" << endl;
    }
    
    // second name space
    namespace second_space{
        void func(){
            cout << "Inside second_space" << endl;
        }
    }
}
using namespace first_space::second_space;
int main () {
    
    // This calls function from second name space.
    func();
    
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读