作者mystea (mystea)
看板PLT
標題[問題] 為什麼local variable的scope不能延及子程序?
時間Wed Mar 5 02:36:31 2008
大家好, 我有一個粗淺的關於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
1F:推 npchen:你內定的不就等價於namespace﹖ 03/05 04:42