首先,每一个类都保持着自己的作用域,在该作用域中定义了成员的名字。
名字查找在编译时发生
对象、引用或指针的静态类型决定了对象能够完成的行为(C++ PRIMER)。这里能够完成的行为,应该说是能够使用的变量名(数据和方法),这些变量名是定义在调用它的对象、引用或指针的静态类型中的。为什么将行为改为变量名,是因为我觉得行为是处理事件的方法,而在静态类型和动态类型在处理时的行为可能是不同的。
名字冲突与继承
这里的名字冲突是发生在C++中的基类同继承类之间的。与基类成员同名的派生类成员将屏蔽对基类成员的直接访问(C++ PRIMER)。需要注意的是:基类成员包括数据和函数方法。
在派生类作用域中派生类成员将屏蔽基类成员,即使函数原型不同,基类成员也会被屏蔽。
这里可以参考:局部作用域中