有如下类声明: class Base{ protected: int amount; public: Base(int n=0):araount(n){ } int getAmount( )const{retum amount;} }; class Derived:public Base{ protected; int value; public: Derived(int m,int n):value(n1),Base(n){ } int getData( )const{return value+amou

题目

有如下类声明: class Base{ protected: int amount; public: Base(int n=0):araount(n){ } int getAmount( )const{retum amount;} }; class Derived:public Base{ protected; int value; public: Derived(int m,int n):value(n1),Base(n){ } int getData( )const{return value+amount;} }; 已知x是一个Derived对象,则下列表达式中正确的是

A.x.value+x.getAmount( )

B.x.getData( )-x.getAmount( )

C.x.getData( )-x.amount

D.x.value+x.amount


相似考题
参考答案和解析
正确答案:B
更多“有如下类声明:class Base{protected:int amount;public:Base(int n=0):araount(n){ }int getAmou ”相关问题
  • 第1题:

    有如下类的声明: class Base{ protected: int amount; public: Base(int n=0):amount(n){} int getAmount()const{return amount;} }; class Derived:public Base{ protected: int value public: Derived(int m,int n):value(m),Base(n){} int getData()const{return value+amount;} };已知x是一个Derived对象,则下列表达式中正确的是

    A.x. value+x. getAmount()

    B.x. getData()-x. getAmount()

    C.x. getData()-x. amount

    D.x. value+x. amount


    正确答案:B

  • 第2题:

    有如下程序:include using namespace std;class Base{private:charc;public:Base(cha

    有如下程序:#include <iostream>using namespace std;class Base{private: char c;public: Base(char n) :c(n){} ~Base() { cout<<c; } };class Derived: public Base{private: char c; public: Derived(char n):Base(n+1),c(n) {} ~Derived() { cout<<c; }};int main (){ Derived obj ('x'); return 0;}执行上面的程序净输出

    A.xy

    B.yx

    C.x

    D.y


    正确答案:A
    解析:在C++中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数main结束时,派生类Derived对象obj将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出x,然后调用基类的析构函数,输出y。

  • 第3题:

    有如下类声明: class SAMPLE { int n: public: SAMPLE(int i=0):n(i){} void setValue(int nO); }; 下列关于9etValue成员函数的定义中,正确的是( )。

    A.SAMPLE::setValue(int nO){n=n0;}

    B.void SAMPLE::setValue(int胡){n=n0;

    C.void setValue(int nO){n=n0;}

    D.setValue(int nO){n=n0;}


    正确答案:B
    本题考查在类外定义类的成员函数,需要使用作用域限定符“::”,属于基础知识,本题答案为8。

  • 第4题:

    有如下类声明: class Base{ protected: int amount; public: Base(int n=0):amount(n){} int getAmountconst{retum amount;} }; class Derived:public Base{ protected: int value; public: Derived(int m,int n):value(m),Base(n){} int getDataconst{return value+amount;} }: 已知x是一个Derived对象,则下列表达式中正确的是( )。

    A.x.value+X.getAmount

    B.x.getData一x.getAmount

    C.x.getData一x.amount

    D.x.value+X.amount


    正确答案:B
    本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,派生类对象只能访问基类的公有成员,而不能}方问基类的保护成员和私有成员。题中x是派生类的对象,只能访问基类中公有的Base和getAmount成员,而不能访问保护类型的amount成员,故选项C、D错误。而类对象对类成员的访问也存在类似的情况,即类对象只能访问类的公有成员,而value是Derived的保护成员,所以A选项也错误。故答案为B。

  • 第5题:

    有如下程序:include using namespace std;class Base{private:char c;public:Base(ch

    有如下程序:#include <iostream>using namespace std;class Base{private: char c;public: Base(char n):c(n){} ~Base() { cout<<c; }};class Derived: public Base{private: char c;public: Derived(char n):Base(n+1),c(n){} ~Derived() { cout<<c; }};int main(){ Derived obj('x'); return 0; }执行上面的程序将输出( )。

    A.xy

    B.yx

    C.x

    D.y


    正确答案:A