有如下程序: #include using namespace std; class B{ public: B(int xx):x(xx){++count;x+=10;} virtual void show(

admin2018-08-13  25

问题 有如下程序:
    #include
    using namespace std;
    class B{
    public:
    B(int xx):x(xx){++count;x+=10;}
    virtual void show()const
    {cout<    protected:
    static int count;
    private:
    int x;
    };
    class D:public B{
    public:
    D(int xx,int yy):B(xx),y(yy){++count;y+=100;}
    virtual void show()const
    {cout<    private:
    int y;
    };
    int B::count=0;
    int main(){
    B*ptr=new D(10,20);
    ptr->show();
    delete ptr;
    return 0:
    }
    运行时的输出结果是(    )。

选项 A、1_120
B、2_120
C、1_20
D、2_20

答案B

解析 在主函数中定义了一个基类B的指针变量ptr,并调用类D的构造函数创建了类D的实例对象,因为变量count是全局变量所以在调用基类B的构造函数给其值加1,在调用D的构造函数时给其值加1,因而输出其值等于2,在类D的构造函数中给成员变量y的值加100,所以其等于120并输出。
转载请注明原文地址:https://kaotiyun.com/show/QyAp777K
0

最新回复(0)