itgle.com

有如下类声明:class XA{int x;public:XA(int n){x=n;}};class XB:public XA{int y;public:XB(int a, int b) ;};在构造函数XB的下列定义中,正确的是A.XB::XB(int a,int B) :x(A) ,y(B) {}B.XB::XB(int a,int B) :XA(A) ,y(B) {}C.XB::XB(int a,int B) :x(A) ,XB(B) {}D.XB::XB(int a,int B) :XA(A)

题目

有如下类声明:

class XA{

int x;

public:

XA(int n){x=n;}

};

class XB:public XA{

int y;

public:

XB(int a, int b) ;

};

在构造函数XB的下列定义中,正确的是

A.XB::XB(int a,int B) :x(A) ,y(B) {}

B.XB::XB(int a,int B) :XA(A) ,y(B) {}

C.XB::XB(int a,int B) :x(A) ,XB(B) {}

D.XB::XB(int a,int B) :XA(A) ,XB(B) {}


相似考题
更多“有如下类声明: class XA{int x; public: XA(int n){x=n;} }; class XB:public XA{ int y; publi ”相关问题
  • 第1题:

    有如下类声明: class XA{ int x; public: XA(int n){x=n;} }; class XB:public XA{ int y; public: XB(int a,int b); }; 在构造函数XB的下列定义中,正确的是( )。

    A.XB::XB(int a,int b):x(a),y(b){}

    B.XB::XB(int a,int b):XA(a),y(b){}

    C.XB::XB(int a,int b):x(a),XB(b){}

    D.XB::XB(int a,int b):XA(a),XB(b){}


    正确答案:B
    解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式:派生类名(构造函数形参表)基类构造函数(形参表)。

  • 第2题:

    有如下类声明: classXA( intX; public: XA(intn){x=n;} }; classXB:publicXA{ inty; public: XB(inta,intb); ]; 在构造函数XB的下列定义中,正确的是( )。

    A.XB::XB(inta,intb):x(a),y(b){)

    B.XB::XB(inta,intb):XA(a),y(b){)

    C.XB::XB(inta,intb):x(a),XB(b)(}

    D.XB::XB(inta,intb):XA(a),XB(b){)


    正确答案:B
    B。【解析】本题考查派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化,然后对派生类中的新增成员初始化。格式为,派生类名(构造函数形参表)基类构造函数(形参表)。

  • 第3题:

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




    【Java代码】
    interface?DrawCircle?{? //绘制圆形 public(1) ;}class?RedCircle?implements?DrawCircle?{? ?//绘制红色圆形???????public?void?drawCircle(int?radius,intx,?int?y)??{????????????System.out.println("Drawing?Circle[red,radius:"?+?radius?+",x:"?+?x?+?",y:"?+y+?"]");???????}}class?GreenCircle?implements?DrawCircle?{????//绘制绿色圆形??????public?void?drawCircle(int?radius,?int?x,int?y)?{???????????System.out.println("Drawing?Circle[green,radius:"?+radius+",x:?"?+x+?",y:?"?+y+?"]");??????}}abstract?class?Shape?{????//形状? protected? ? (2)???;? ? public?Shape(DrawCircle?drawCircle)?{? ?this.drawCircle=?drawCircle;? ? ? public?abstract?void?draw();}class?Circle?extends?Shape?{? //圆形? ?private?int?x,y,radius;? public?Circle(int?x,int?y,intradius,DrawCircle?drawCircle)?{? ?(3)???;? this.x?=?x;? ? ? this.y?=?y;? ?this.radius?=radius;? }? ? ?public?void?draw()?{? ? drawCircle.? ?(4)? ?;? ? ? }}public?class?DrawCircleMain?{? public?static?void?main(String[]?args)?{? Shape?redCircle=new?Circle(?100,100,10,? (5) );//绘制红色圆形? Shape?greenCircle=new?Circle(200,200,10,(6) );//绘制绿色圆形? ?redCircle.draw(); greenCircle.draw();? ?}}


    答案:
    解析:
    (1)void drawCircle (int radius,int x,int y)
    (2)DrawCircle drawCircle
    (3)super.drawcircle=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。
    第三空这里用super,用super. drawcircle来引用父类的成员。
    第四空调用drawCircle(radius,x,y)方法。
    第五、六空分别创建一个红色圆形对象和一个绿色圆形对象作为Circle里面的实参。

  • 第4题:

    有如下类声明: classXA{ intx: public: XA(intn){x=n;} }; classXB:publicXA{ inty; oublic: XB(inta,intb); }; 在构造函数XB的下列定义中,正确的是( )。

    A.XB::XB(inta,intb):x(a),y(b){}

    B.XB::XB(inta,intb):XA(a),y(b){}

    C.XB::XB(inta,intb):x(a),XB(b){}

    D.XB::XB(inta,intb):XA(a),XB(b){}


    正确答案:B
    B。【解析】C++中派生类构造函数的一般语法规则为<派生类名>::<派生类名>(<参数表>):<基类1>(<参数表1>),…,<基类名n>(<参数表n>),<子对象l>(<子对象参数表1>,…<子对象m>(<子对象参数表m>){<派生类新增成的初始化语句>;}。

  • 第5题:

    有如下类声明: class XA { int x; public: XA(int n) {x=n;} }; class XB: public XA{ int y; public: XB(int a,int b); };在构造函数XB的下列定义中,正确的是______。

    A.XB:: XB(int a, int b):x(a),y(b) { }

    B.XB::XB(int a, int b):XA(a),y(b){}

    C.XB::XB(int a,int b):x(a),XB(b)i}

    D.XB::XB(int a,int b):XA(a),XB(b){}


    正确答案:B
    解析:构造函数的定义过程中,初始化基类成员,只能通过调用基类构造函数,所以答案选择B。