在继承情况下,派生类的作用域嵌套在基类作用域中。
因此,如果不能在派生类作用域中确定的名字,就在外围基类作用域中查找该名字的定义。
在基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。如果要访问被屏蔽的基类成员,需要指定作用域。
#include <iostream>
class A
{
public:
void get(){std::cout << "This is A" << std::endl;}
};
class B:public A
{
public:
void get(){std::cout << "This is B" << std::endl;}
};
int main(void)
{
B b;
b.get();
b.B::get();
b.A::get();
return 0;
}
运行结果:
This is B
This is B
This is A