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

admin2013-02-27  15

问题 有如下程序:    #include<iostream>    using namespace std;    class A{    public:    virtual void func1(){cout<<"A1";}    void func2(){cout<<"A2";}    };    class B:public A{    public:    void func1(){cout<<"B1";}    void func2(){cout<<"B2";}    };    int main() {    A *p=new B;    p->func1();    p->func2();    return 0;    }    执行该程序,屏幕上将显示输出(    )。

选项 A、B1B2
B、A1A2
C、B1A2
D、A1B2

答案C

解析 程序中B为A的派生类,由主函数入手,主函数中定义了类A的指针p指向类B。根据基类中的“virtual void func1()”知道A中的func1为虚函数,执行“p->func1();”语句,通过指针变量调用此虚函数,此时调用的就是指针变量指向的同名函数,即派生类的func1函数,输出B1。而fun2不是虚函数,所以执行“p->func2();”输出为A2。
转载请注明原文地址:https://kaotiyun.com/show/ZdVp777K
0

最新回复(0)