有如下程序: #include<iostream> using namespace std; class Base{ public: virtual void func1(){cout<<"Base 1";}

admin2013-05-30  20

问题 有如下程序:    #include<iostream>    using namespace std;    class Base{    public:        virtual void func1(){cout<<"Base 1";}        void rune2(){cout<<"Base 2";}    };    class Derived:public Base{    public:        void func1(){cout<<"Derived 1";}        void func2(){cout<<"Derived 2";}    };    int main(){        Base *p=new Derived;        P->func1();        P->func2();        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->func1();后,执行派生类Derived的函数void func1();调用p->rune2();后,执行基类的函数void func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针p调用func2时将直接调用基类中的void func2()。
转载请注明原文地址:https://jikaoti.com/ti/U5E0FFFM
0

最新回复(0)