名稱空間
該關鍵字 namespace
有根據上下文三種不同的含義:
-
如果後跟可選名稱和括號括起的宣告序列,它將定義新的名稱空間或使用這些宣告擴充套件現有的名稱空間 。如果省略該名稱,則名稱空間是未命名的名稱空間 。
-
如果後跟名稱和等號,則宣告名稱空間別名 。
-
當以
using
開頭並後跟名稱空間名稱時,它形成一個 using 指令 ,該指令允許通過非限定名稱查詢找到給定名稱空間中的名稱(但不會在當前範圍中重新宣告這些名稱)。一個 using 指令不能在類範圍內發生。
using namespace std;
氣餒。為什麼?因為 namespace std
很大! 這意味著名稱碰撞的可能性很大:
//Really bad!
using namespace std;
//Calculates p^e and outputs it to std::cout
void pow(double p, double e) { /*...*/ }
//Calls pow
pow(5.0, 2.0); //Error! There is already a pow function in namespace std with the same signature,
//so the call is ambiguous