C++_名稱空間namespace 與 using編譯指令 與 using宣告使用。
阿新 • • 發佈:2019-02-18
名稱空間:
C++中允許使用者建立自己的使用者空間。可以通過關鍵字namespace 宣告即可
需要注意的事項:
名稱空間可以是全域性的,也可以位於另一個名稱空間中,但不能位於程式碼塊中。
示例程式碼如下:
#include <iostream> using namespace std; namespace Jill{ double bucket(double a){ return a + 3; } double fetch; struct Hill{ int a; int b; }; }; int main(){ Jill::fetch = 3; cout << Jill::bucket(2) << endl; return 0; }
using指令:
using 宣告使特定的標示符可用。
示例如下:如同使用了包裡的一個變數,在接下來的作用域裡不需要顯示使用作用域標示符,也不能定義同名變數。
#include <iostream> using namespace std; namespace Jill{ double bucket(double a){ return a + 3; } double fetch; struct Hill{ int a; int b; }; }; int main(){ using Jill::fetch; Jill::fetch = 7; double fetch; cin >> fetch; cout << fetch << endl; cout << Jill::fetch << endl; cout << Jill::bucket(2) << endl; return 0; }
using 編譯指令使整個名稱空間可用。
#include <iostream> using namespace std; namespace Jill{ double bucket(double a){ return a + 3; } double fetch; struct Hill{ int a; int b; }; }; int main(){ using namespace Jill; Jill::fetch = 7; //double fetch; cin >> fetch; cout << fetch << endl; cout << Jill::fetch << endl; cout << Jill::bucket(2) << endl; return 0; }
名稱空間是開放的(open),可以把名稱加入到已有的名稱空間中。例如下面的語句:
namespace Jill{
char * goose(const char *);
}
可以在檔案的後面(或另外一個檔案中)再次使用Jack名稱空間來提供該函式的程式碼。
namespace Jill{
char * goose(const char * xx){
.........
}
}
可以給名稱空間取別名。
如:namespace mvft = my_very_favorite_things;
namespace MEF = myth::elements::fire;
#include <iostream>
using namespace std;
namespace Jill{
double bucket(double a){ return a + 3; }
double fetch;
struct Hill{
int a;
int b;
};
namespace Pick{
int abile;
}
};
namespace tank = Jill::Pick;
int main(){
Jill::fetch = 3;
tank::abile = 4;
cout << tank::abile << endl;
cout << Jill::bucket(2) << endl;
return 0;
}
可以定義省略名稱空間的名稱來建立未命名的名稱空間:
namespace{
int ice;
int bandycoot;
}