作者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