有如下类定义: classAA{ inta: public: AA(intn=0):a(n)() }; classBB:publicAA{ pubilc: BB(intn)____ }; 其中横线处缺失部分是()。A.:a(n){}B.:AA(n){}C.{a(n);}D.{a=n;}

题目

有如下类定义: classAA{ inta: public: AA(intn=0):a(n)() }; classBB:publicAA{ pubilc: BB(intn)____ }; 其中横线处缺失部分是()。

A.:a(n){}

B.:AA(n){}

C.{a(n);}

D.{a=n;}


相似考题
参考答案和解析
正确答案:B
B。【解析】需要实现父类构造函数。
更多“有如下类定义: classAA{ inta: public: AA(intn=0):a(n)() }; classBB:publicAA{ pubilc: ”相关问题
  • 第1题:

    有如下类定义: Class AA{ int a: PubliC: AA(int n=O):a(n){} }; Class BB:publiC AA{ publiC: BB(int n) }; 其中横线处的缺失部分是( )。

    A.:a(n){}

    B.:AA(n){}

    C.{a(n);}

    D.{a=n;}


    正确答案:B
    本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。

  • 第2题:

    有如下程序:includeusing namespaee std;class AA{public:AA( ){cout<<'1';}};class

    有如下程序: #include<iostreanl> using namespaee std; class AA{ public: AA( ){cout<<'1';} }; class BB:public AA{ int k; public: BB( ):k(0){eout<<'2';} BB(int n):k(n){cout<<'3';} }; int main( ){ BB,b(4),c; return 0; } 程序的输出结果是

    A.1312

    B.132

    C.32

    D.1412


    正确答案:A
    解析:创建派生类对象时,先调用基类构造函数,然后调用派生类构造函数,b(4)先调用基类构造函数,然后调用BB的带参数构造函数,打印1和3;c调用基类AA的构造函数,然后调用BB的构造函数,打印1和2。故答案为A。

  • 第3题:

    有如下程序: #include<iostream> using namespace std; class AA{ int k; protected: int n; void setK(int k){this一>k=k;} public: void setN(int n){this一>n=n;} }; class BB:public AA{/*类体略*/}; int main } BB X; A n=1;//1 B setN(2);//2 C k=3;//3 D setK(4);//4 return 0; } 在标注号码的四条语句中正确的是( )。

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错误,所以B选项正确。

  • 第4题:

    有如下程序: inClude using namespace std; class AA { public: viltual void f() { c

    有如下程序:

    inClude<iostream>

    using namespace std;

    class AA

    {

    public:

    viltual void f()

    {

    cout<<"AA";

    }

    };

    class BB:public AA

    {

    public:

    BB()

    {

    cout<<"BB";

    }

    };

    class CC:public BB

    {

    public:

    virtual void f()

    {

    BB::f();

    cout<<"CC";

    }

    };

    int main()

    {

    AA aa,*p;BB bb;CC cc;

    p=&cc;

    p->f();

    return 0;

    }

    运行后的输出结果【 】。


    正确答案:BBBBAACC
    BBBBAACC 解析:本题考核虚函数。本题中,函数f()在基类AA中派生类CC中都声明为虚函数,所以采用动态联编。主函数首先定义类AA的对象aa和指针对象p,然后定义了类BB的对象bb,此时调用了类BB的构造函数输出BB。再定义类CC的对象cc,由于类CC是类BB的派生类,所以此时又调用类BB的构造函数输出BB。最后执行语句“p=&cc;p->f();”,输出AA和CC。

  • 第5题:

    有如下程序:

    include<iostream>

    usingnamespacestd;

    classAA{

    public;

    AA( ){cOUt<<1;)

    };

    classBB:publicAA{

    intk;

    public:

    BB( ):k(0){tout<<12;}

    BB(intn):k(n)(cout<<3;)

    };

    intmain( ){

    BBb(4),c;

    return0;

    }

    运行时的输出结果是( ).

    A.1312

    B.132

    C.32

    D.1412


    正确答案:A

    A。【解析】当基类的构造函数默认或无参时,派生类可省略对基类构造函数的显示调用,但系统会自动调用该类的缺省构造函数,且先调用基类的构造函数后调用派生类的构造函数。