对于在不同的作用域声明的标识符,可见性原则是:
如果存在两个或则多个具有包含关系的作用域,外层声明的标识符如果没有在内层声明,则他在内层任然可见;如果内层声明了同名标识符,则外层标识符在内层不可见,这时称内层变量覆盖了外层同名变量,这种现象叫同名覆盖。
在类的派生层次结构中,基类的成员和派生类新增的成员都具有类作用域,二者的作用范围不同,是相互包含的两个层,派生类在内层。
这时,如果派生类声明了一个和基类成员同名的新成员(如果是成员函数,则参数表也要相同,参数不同的情况属于重载),派生的新成员就覆盖了外层同名成员,直接使用成员名只能访问到派生类的成员,如果加入作用域分辨符(::),使用基名来限定,就可以访问到基类的同名成员。