编译器如何不混淆局部变量命名的大小与函数调用大小()?



在阅读一本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

最新更新