在阅读一本c++教科书时,我看到了这段特定的代码:
vector<double> homework;
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size();
我想知道在编译过程中如何没有任何冲突,因为局部变量size
和被称为size()
的函数共享相同的名称,并且(如果我错了,这里期望纠正)它们显然在相同的范围内。如果它们不在同一作用域中,那么编译器如何在单个语句中处理这两个名称?
提前感谢您的时间,希望我的问题有意义!
为什么在编译过程中没有任何冲突,因为本地变量size
因为homework.size()
中的size
是限定名。而没有任何限定的名称size
是一个限定名称。当您编写homework.size()
时,只有类作用域查找与类名homework
对应的。因此,如果您要写
//----vvvv-------------------->local variable named size
size = homework.size();
//--------------------^^^^---->data member named size in class scope