有如下程序: #include using namespace std; class Base{ public: virtual void func 1 0{cout

admin2013-09-11  89

问题 有如下程序:
#include
    using namespace std;
    class Base{
    public:
    virtual void func 1 0{cout<<“Base 1”;}
    void func2(){cout    };
    class Derived:public Base{
    public:
    void funclf){cout<<:“Derived 1”;)
    void fnc20{cout<<“Derived 2”;}
    };
    int main(){
    Base*p=new Derived;
    p->fimcl();
    P一>func20;
    return 0:
    }
运行此程序,屏幕上将显示输出

选项 A、Derived 1 Base 2
B、Base 1 Base 2
C、Derived 1 Derived 2
D、Base 1 Derived 2

答案A

解析 派生类Derived由基类Base公有继承而来。调用p.>funcl();后,执行派生类Derived的函数void funcl();调用p->func2();后,执行基类的函数’void func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针p调用func2时将直接调用基类中的voidfunc2()。
转载请注明原文地址:https://kaotiyun.com/show/QzBD777K
0

最新回复(0)