分類: c++
2011-05-12 11:35
288人閱讀收藏
舉報 1、using namespace
命名空間主要是為了解決在大的互相合作的工程中,出現像變數、函式、結構、列舉、類以及類和結構的成員的名稱相互衝突的可能。
declaration region:宣告區域,是可以在其中進行宣告的區域。
potential scope:潛在作用域,變數的潛在作用域是從宣告點開始,到其宣告區域結束。由於變數必須在宣告之後在能使用,因此潛在作用域比宣告區域小。
注意:注意變數並非在其潛在作用域中任何位置都是可見的。如,它可能被在巢狀宣告區域中宣告的同名變數隱藏。
using 宣告和using編譯指令:
using宣告是將特定的名稱新增到它所屬的宣告區域中。它像其他的變數一樣,能夠覆蓋同名的變數。
using編譯指令是使所有的名稱都可以用。它是由命名空間名和關鍵字using namespace組成,使命名空間中的所有名稱都可用,而不需要使用作用域解析操作符。using編譯指令將命名空間的名稱視為函式之外宣告的,但它不會使得該檔案中的其他函式能夠使用這些名稱。一般來說,使用using宣告比使用using編譯指令更安全。
[cpp]view plain
copy
print?
#include
using
namespace std;
namespace leezhm
}
namespace newleezhm
namespace nestedleezhm
}
}
void display()
namespace jill
;
double fetch;
struct hill;
}
char fetch;
int main()
//}
leezhm::display();
newleezhm::display();
display();
//using namespace newleezhm;
//nestedleezhm::display();
//::display();
using
namespace newleezhm::nestedleezhm;
::display();
using newleezhm::nestedleezhm::display;
display();
using
namespace jill;
//hill thrill;
double water = bucket(2);
double fetch;
cin>>fetch; //local variable;hides the jill::fetch
cin>>::fetch; //global variable
cin>>jill::fetch;//jill:fetch
cout<" "
<<::fetch<<" "
<
return 0;
}
int foom()
1、使用在已命名的命名空間中宣告的變數,而不使用外部全域性變數和靜態全域性變數。
2、盡量將自己開發的一組有邏輯關係的類庫和函式庫,放人乙個命名空間中。
3、僅將using編譯指令作為將舊**轉換為使用命名空間的權宜之計。
4、不要在標頭檔案中使用using編譯指令。如果一定要使用,請放在#include之後。
5、在匯入名稱時,優先使用using宣告的方法。
6、對於using宣告,首選將其作用域設定為區域性而不是全域性。
命名空間 總結
1.namespace解決了命名衝突問題 可以放 函式 變數 結構體 類 2.命名空間必須定義在全域性作用域下 3.命名空間可以巢狀命名空間 4.命名空間是開放的,可以隨時給命名空間新增內容。巢狀時可用 using namespace a b 匿名 命名空間 當定義乙個命名空間時,可以忽略這個命名空...
Python命名空間總結 「命名空間之禪」
python中的命名空間,在使用點號.和不使用點號.兩種情況下使用變數名時,會有不同的處理方式。賦值語句 var value 僅僅是建立或改變當前作用域變數名,除非使用了global或者nonlocal關鍵字 引用語句 var 搜尋路徑如下 l local 在當前作用域下搜尋變數名var e 在所有...
PHP命名空間學習
1 任何php 都可以包含在命名空間檔案中,但受到影響的只有類,函式,常量。2 定義命名空間 使用關鍵字namespace 宣告 而且必須在所有其它 之前 包括非 php 空白符 宣告。3 唯一可以出現在宣告命名空間語句之前的,是定義原始檔編碼宣告的declare 語句。例如 declare enc...