有如下类定义: class Base { public: void fun() { cout

admin2019-04-18  36

问题 有如下类定义:
       class Base {
       public:
           void fun() { cout<<"Base::fun"<       };
       class Derived : public Base {
       public:
           void fun() {     
               ____________;
               cout<<"Derived::fun"<           }
       };
若需要在划线处调用基类中的fun()函数,则填写的语句是

选项 A、Base.fun();
B、Base->fun();
C、Base::fun();
D、fun();

答案C

解析 基类Base和派生类Derived中使用同一名字的成员函数fun,所以在派生类Derived的作用域中,派生类Derived中的fun函数会屏蔽基类Base中的fun函数,即Base的fun函数对Derived不可见,这是因为编译器在查找名字fun时,首先在Derived中找到,这样编译器就不再继续查找,所以若想在Derived中调用Base的fun函数,必须显式的说明fun函数属于Base,这里使用作用域运算符访问被屏蔽的fun,调用语句为:Base::fun();答案为C。
转载请注明原文地址:https://kaotiyun.com/show/KaAp777K
0

最新回复(0)