C++中namespace的用法理解


最近在學習學習大疆OSDK開發,本人只學過C語言,對於C++中的一些用法不是很熟悉,在這里記錄一下自己學習過程:

命名空間namespace一般用來給類或者函數做區間定義,從而使編譯器能准確定位到適合的類或者函數。比如自行定義了一個函數test(void),而在該項目的庫函數內也定義了一個函數test(void);當你調用test();函數的時候,編譯器便不知道該調用哪個,從而引發錯誤,這個時候namespace的作用就顯現出來了。

namespace的定義用法:

1 namespace namespace_name {
2     // code declarations
3     // 函數,類名等等
4 }

namespace對應的調用方法:

1 name::code; //此處code就是對應namespace內定義的類名或者函數名等等

 

實際調用舉例:

 1 #include <iostream>
 2 using namespace std;
 3     
 4 // first name space
 5 namespace first_space{
 6     void func(){
 7         cout << "Inside first_space" << endl;
 8     }
 9 }
10     
11 // second name space
12 namespace second_space{
13     void func(){
14         cout << "Inside second_space" << endl;
15     }
16 }
17     
18 int main () {
19      
20 // Calls function from first name space.
21 first_space::func();
22        
23 // Calls function from second name space.
24 second_space::func(); 
25     
26 return 0;
27 } 

在這個函數內用了兩個命名空間(namespace),輸出的結果既是:

1 "Inside first_space"
2 "Inside second_space"

當然對於"namespace",那肯定還有相應的"using"關鍵詞,"using"關鍵詞既是指定使用特定的"namespace",舉例:

 1 #include <iostream>
 2 using namespace std;
 3     
 4 // first name space
 5 namespace first_space{
 6     void func(){
 7     cout << "Inside first_space" << endl;
 8     }
 9 }
10     
11 // second name space
12 namespace second_space{
13 //此處func與第一處命名空間內函數名相同
14     void func(){
15         cout << "Inside second_space" << endl;
16     }
17 }
18     
19 // 使用第一個namespace
20 using namespace first_space;
21 int main () {
22      
23 // This calls function from first name space.
24     func();
25        
26     return 0;
27 }

 

此處已經強調使用第一個命名空間,所以第一處命名空間的空間名都可以省略不寫,直接調用對應的函數或者參數即可。
最后返回的結果既是:

1 "Inside first_space"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM