Whichstatementsconcerningthefollowingcodearetrue?()classa{publica(){}publica(inti){this();}}classbextendsa{publicbooleanb(Stringmsg){returnfalse;}}classcextendsb{privatec(){super();}publicc(Stringmsg){this();}publicc(inti){}}A.Thecodewillfailtocompile.B.T

题目

Whichstatementsconcerningthefollowingcodearetrue?()classa{publica(){}publica(inti){this();}}classbextendsa{publicbooleanb(Stringmsg){returnfalse;}}classcextendsb{privatec(){super();}publicc(Stringmsg){this();}publicc(inti){}}

A.Thecodewillfailtocompile.

B.Theconstructorinathattakesanintasanargumentwillneverbecalledasaresultofconstructingan objectofclassborc.

C.Classchasthreeconstructors.

D.Objectsofclassbcannotbeconstructed.

E.Atmostoneoftheconstructorsofeachclassiscalledasaresultofconstructinganobjectofclassc.


相似考题
更多“Whichstatementsconcerningthefollowingcodearetrue?()classa{publica(){}publica(inti){this(); ”相关问题
  • 第1题:

    下面程序的结果是includeclass A{public:A( ){cout<<"construtA"<

    下面程序的结果是 #include<iostream.h> class A { public: A( ) {cout<<"construtA"<<endl;} virtual~A( ) {cout<<"destructA"<<endl;}}; class B:public A {}; class C:public A {}; c

    A.constructA destructA

    B.constructA constructA destructA destructA

    C.constructA constructA constructA destructA destructA destructA

    D.constructA onstructA constructA constructA destructA destructA destructA destructA


    正确答案:B
    解析:类D继承了类C和类B,所以在构造的时候分别构造类B和类C。

  • 第2题:

    若类A和类B的定义如下: class A { int i,j; public: int geti() { return i; } }; class B: public A { int k; public: void make() { k=i*j } }; 则上述定义中

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第3题:

    5、若有类定义A,则该类的构造方法的可能形式是()。

    A.public void A(){ }

    B.public A(int i){ }

    C.public void a(){ }

    D.public a(){ }


    错误

  • 第4题:

    若类A和类B的定义如下: class A { int i,j; public: int geti () { return i; } }; class B : public A { int k; public: void make () { k=i*j; } }; 则上述定义中非法的语句是

    A.k=i*j;

    B.int k;

    C.return i;

    D.void make()


    正确答案:A
    解析:本题考核派生类的定义和访问权限。变量i和j都是基类A的私有变量,它们是隐蔽的,在派生类中不能直接访问。

  • 第5题:

    若有以下程序:include using namespace std;class A{protected: int a;public: A() {

    若有以下程序: #include <iostream> using namespace std; class A { protected: int a; public: A() { a=10; } }; class A1 : public A { public: A1() { a=a+1; } }; class A2 : public A { public: A2 () { a=a+2; } }; class B : public A1,public A2 { public: B(){} void print() { cout<<a<<end1; } }; int main ( ) { B obj; obj.print(); return 0; } 程序运行后的输出结果是( )。

    A.产生语法错误

    B.11

    C.12

    D.10


    正确答案:A
    解析:本题考核派生类的定义和使用。本程序有语法错误,这是由于类B中的print函数中的语句“coutaend1;”要输出成员a的值,从而产生了二义性。分析如下:程序中定义了类A,类A1和类A2都是在类A的基础上以公有继承方式产生的派生类,而类B是在类A1和类A2的基础上经过多重继承方式产生的派生类,所以在类B中成员a有两个拷贝,系统无法区分是从A1继承过来的a,还从A2类继承过来的a。修改方法有以下两种:①在被访问的成员加上作用域分辨符“::”。将类B中的print()函数体中语句改为:coutA1::aend1;或coutA2::aend1;但两者的输出结果不同,前者输出11,而后者输出12。②采用虚基类的方法。就是在定义A1和A2时,在派生方式前加上关键词“virtual”。