看板 PLT 關於我們 聯絡資訊
大家好, 我有一個粗淺的關於scope的問題想請教大家. 寫程式的時候, local variable的scope都僅限於自己這個函數, 如果想用子函式去碰就非得pass by reference傳進去才行. 我初學scope時, 老師跟我說這樣主要的目的是為了名稱可以重複使用. 比方說人們常常用i來跑for loop. 當local variable的scope像這樣設得 很小時, 子函式的i就不會跟母函式的i搞混了. 可是現在我不是很同意這個說法. 因為這種問題用類似namespace的手法其實 就可以解決了. 比方說我有下列的程式: int main() { int i; int son(int j); for(i=0;i<20;i++) { cout<<son(i)<<endl; } } int son(int j) { int i; for(i=0;i<j;i++) return i; } 像這樣的東西, 其實我可以內定son()裡的i叫做son::i, main()裡的i叫做main::i, 然後各個函式裡不加"namespace"的default就是指自己函式裡的那個i. 像這樣名稱也並不會搞混是不是呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.170.235.113
npchen:你內定的不就等價於namespace﹖ 03/05 04:42