有如下类定义:class XX{int xdata;public:xx(int n=O):xdata(n){}};class YY:public XX{int ydata;public:YY(int m=0,int n=O):XX(m),ydata(n){}};YY类的对象包含的数据成员的个数是A.1B.2C.3D.4

题目

有如下类定义:

class XX{

int xdata;

public:

xx(int n=O):xdata(n){}

};

class YY:public XX{

int ydata;

public:

YY(int m=0,int n=O):XX(m),ydata(n){}

};

YY类的对象包含的数据成员的个数是

A.1

B.2

C.3

D.4


相似考题
更多“有如下类定义:class XX{int xdata;public:xx(int n=O):xdata(n){}};class YY:public XX{int ydat ”相关问题
  • 第1题:

    有如下类定义:

    class XX{

    int XX;

    public:

    xx():xx(0){tout<<A;}

    XX(int n):xx(n){cout<<B;}

    };

    class Y:Y:public XX{

    int YY;

    public:

    YY():YV(O){cout<<YY;)

    YY(int n):xx(n+1),YY(n){cout<<YY;}

    YY(int m,int n):XX(m),YY(n){cout<<yy;)

    };

    下列选项中,输出结果为A0的语句是

    A.YY yl(0,0);

    B.YY 72(1);

    C.YY y3(0);

    D.YY y4;


    正确答案:D
    解析:建立派生类对象时,构值函数的执行顺序为:执行基类的构造函数一执行成员对象的构造函数一执行派生类的构造函数。D)选项定义对象y4时没有传人任何值,则先调用基类的构造函数.XX( ),输出‘A。,然后调用派生类的构造函数YY( ),输出yy=0,最终输出为A0。故本题答案为D)。

  • 第2题:

    有如下类定义: class XX{ int xdata: public: xx(int n=0):xdata(n){} } class YY:public XX{ int ydata; public: YY(int m=0,int n=0):xx(m),ydata(n){ } {; YY类的对象包含的数据成员的个数是

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:派生类继承基类,继承了基类的数据成员和成员函数,加上派生类自己新定义的数据成员,所以该类应该有2个数据成员。

  • 第3题:

    阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
    【说明】
    以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6-1所示。



    【C++代码】
    #include?#include?using?namespace?std;class?DrawCircle?{??????//绘制圆形,抽象类? ? ? public: (1);//定义参数为?int?radius,?int?x,?inty? ?virtual~DrawCircle()?{?}};class?RedCircle:public?DrawCircle?{????//绘制红色圆形? ? ? ? public: void?drawCircle(intradius,?int?x,?int?y)?{cout?<?drawCircle?=?drawCircle;? }? ?virtual~shape()?{?}? public:? ?virtual?void?draw()?=?0;};class?Circle:public?Shape?{????//圆形? ? private:? ? ?int?x,y,radius;? ? public:? Circle(int?x,inty,int?radius,DrawCircle?*drawCircle)? (3)? {? this->x?=?x;? ?this->y?=?y;? ? this->radius?=?radius; }? ? ? public:? void?draw(){? drawCircle?-> (4); }};int?main(){Shape?*redCirclenew?Circle(100,100,10,????(5)????);//绘制红色圆形? Shape?*greenCircle=new?Circle(100,100,10, (6)??);//绘制绿色圆形redCircle >draw();? ?greenCircle?->draw();? ?return?0;}


    答案:
    解析:
    (6)(1)void drawCircle (int radius,int x,int y)
    (2)DrawCircle*drawCircle
    (3)drawcircle
    (4)drawCircle(radius,x,y)
    (5)new RedCircle()
    (6)new GreenCircle()【解析】
    第一空是填接口里面的方法,在接口的实现里面找,可以发现应该填void drawCircle (int radius,int x,int y)。
    第二空可以根据后面this drawCircle=drawCircle判断,这里应该有一个drawCircle属性,因此应该填)DrawCircle drawCircle。
    第三空这里填drawcircle,用-> drawcircle来引用父类的成员。
    第四空调用drawCircle(radius,x,y)方法。
    第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

  • 第4题:

    有如下类定义:

    classXX{

    intxdata;

    public:

    XX(intn=0):xdata(n){}

    };

    classYY:publicXX{

    intydata;

    public:

    YY(intm=0,intn=O):XX(m),ydata(n){}

    };

    YY类的对象包含的数据成员的个数是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    B。【解析】本题主要考查派生类的继承方式。该题为公有继承,它包含基类中全部数据成员和除了构造、析构函数之外的全部成员函数,本题数据成员的个数即为2。

  • 第5题:

    有如下程序:includeusingnamespacestd;classXX{protected: intk;public: XX(intn=5):

    有如下程序: #include <iostream> using namespace std; class XX { protected: int k; public: XX(int n=5):k(n){} ~XX() { cout<<"XX"; } virtual void f() const=0; }; inline void XX::f()

    A.28XX

    B.28YYXX

    C.-33XX

    D.-33XXYY


    正确答案:A
    解析:本题中,&p是一个对象指针,通过使用new运算符变成了指向派生类YY的对象指针。所以当建立并初始化对象指针&p时,程序将调用基类XX的构造函数,给私有数据成员k赋值5。然后调用派生类YY的常成员函数f(),输出值2和8。最后调用基类XX的析构函数输出XX。