深入浅出之命名空间
1. 定義命名空間
命名空間的定義使用關(guān)鍵字?namespace,后跟命名空間的名稱,如下所示:
namespace namespace_name { // 代碼聲明 }
為了調(diào)用帶有命名空間的函數(shù)或變量,需要在前面加上命名空間的名稱,如下所示:
name::code; // code 可以是變量或函數(shù)
#include <iostream> using namespace std;// 第一個(gè)命名空間 namespace first_space{void func(){cout << "Inside first_space" << endl;} } // 第二個(gè)命名空間 namespace second_space{void func(){cout << "Inside second_space" << endl;} } int main () {// 調(diào)用第一個(gè)命名空間中的函數(shù)first_space::func();// 調(diào)用第二個(gè)命名空間中的函數(shù)second_space::func(); return 0; }2. using 指令
您可以使用?using namespace?指令,這樣在使用命名空間時(shí)就可以不用在前面加上命名空間的名稱。這個(gè)指令會(huì)告訴編譯器,后續(xù)的代碼將使用指定的命名空間中的名稱。
#include <iostream> using namespace std;// 第一個(gè)命名空間 namespace first_space{void func(){cout << "Inside first_space" << endl;} } // 第二個(gè)命名空間 namespace second_space{void func(){cout << "Inside second_space" << endl;} } using namespace first_space; int main () {// 調(diào)用第一個(gè)命名空間中的函數(shù)func();return 0; }3. 套的命名空間
命名空間可以嵌套,您可以在一個(gè)命名空間中定義另一個(gè)命名空間,如下所示:
namespace namespace_name1 {// 代碼聲明namespace namespace_name2 {// 代碼聲明} }您可以通過使用 :: 運(yùn)算符來訪問嵌套的命名空間中的成員:
// 訪問 namespace_name2 中的成員 using namespace namespace_name1::namespace_name2; // 訪問 namespace:name1 中的成員 using namespace namespace_name1;4. 命名空間作用?
命名空間的作用:是建立一些互相分隔的作用域,把一些全局實(shí)體分隔開來。
實(shí)際上就是一個(gè)由程序設(shè)計(jì)者命名的內(nèi)存區(qū)域,程序設(shè)計(jì)者可以根據(jù)需要指定一些有名字的空間域,把一些全局實(shí)體分別放在各個(gè)命名空間中,從而與其他全局實(shí)體分隔開來。
總結(jié)