【C++】C++名稱空間(名字空間)
阿新 • • 發佈:2018-12-14
例如小李和小韓都參與了一個檔案管理系統的開發,它們都定義了一個全域性變數 fp,用來指明當前開啟的檔案,將他們的程式碼整合在一起編譯時,很明顯編譯器會提示 fp 重複定義(Redefinition)錯誤。
::
是一個新符號,稱為域解析操作符,在C++中用來指明要使用的名稱空間。
除了直接使用域解析操作符,還可以採用 using 宣告,例如:
using Li :: fp;
fp = fopen("one.txt", "r"); //使用小李定義的變數 fp
Han :: fp = fopen("two.txt", "rb+"); //使用小韓定義的變數 fp
在程式碼的開頭用using
參考程式(有改動和註釋)
#include <stdio.h> //將類定義在名稱空間中 namespace wanglei{ class Student{ public: char *name; int age; float score; public: void say(){ printf("%s的年齡是 %d,成績是 %f\n", name, age, score); } }; } namespace BeiJing{ class Student{ public: char *name; int age; float score; public: void say(){ printf("%s的黨齡是 %d,成績是 %f\n", name, age, score); } }; } int main(){ wanglei::Student stu1; stu1.name = "小明"; stu1.age = 15; stu1.score = 92.5f; stu1.say(); BeiJing::Student stu2; //只能寫成 BeiJing::Student 或者 wanglei::Student,不能寫成 BeiJing::Student stu1; //否則在同一個main函式裡出現兩個stu1 是重定義redefinition stu2.name = "小紅"; stu2.age = 15; stu2.score = 92.5f; stu2.say(); return 0; }