有如下类声明: class MyBASE{ int k; public: void set(iht n){k=n;} int get()coast{return k;} }; class MyDERIVED:pnoted My BASE { protected: int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员

题目

有如下类声明: class MyBASE{ int k; public: void set(iht n){k=n;} int get()coast{return k;} }; class MyDERIVED:pnoted My BASE { protected: int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

A.4

B.3

C.2

D.1


相似考题
参考答案和解析
正确答案:B
解析:protected派生:pnvate->不可见;protected->private;public->protected。
更多“有如下类声明: class MyBASE{ int k; public: void set(iht n){k=n;} ”相关问题
  • 第1题:

    有如下类声明: class MyBASE { int k; public: void set(int n) {k=n;} int get()const{return k;} }; class MyDERIVED:protected MyBASE { protected. int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第2题:

    已知类X的定义如下,为了实现将对象成员k的值修改为678,下面的哪条语句是正确的 ______。 class X{ private: int k; public: K(int n){k=n;} set(int n){k=m;} }; void fun(){ X a(10),*p=&a; ______ }

    A.p->set(678);

    B.X(678):

    C.p->k=678;

    D.p.set(678);


    正确答案:A

  • 第3题:

    有如下类声明: class MyBASE { int k; public: void set(int n){k=n;} int get()const{return k;} }; class MyDERIVED:protected MyBASE { protected: int j: public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:因为在保护继承的情况下,基类中的公有成员void set(int n)和int get()const在派生类中是保护成员,再加上派生类自身的保护成员j,一共是3个保护成员。

  • 第4题:

    有如下类声明: class MyBASE { int k; public: void set(int n){k=n;} int get()const{return k;} }; class MyDERIVED:protected MyBASE { protected: int j; public: void set(int m, int n) {MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:本题考核派生与继承中关于访问权限的继承。类MyDERIVED保护继承类MyBASE,那么类MySASE中的共有成员在派生类MyDERIVED中表现为保护权限,所以加上派生MyDERIVED后来定义的一个保护数据成员j,类MyDERIVED中保护的数据成员和成员函数的个数是3。

  • 第5题:

    有如下类定义: class MyBase{ int k; public: MyBase(int n=O):k(n)}} int valueeonst{return k;} }; class MyDerived:MyBase{ intj; public: MyDerived(int i):j(i)}} int getKconst{return k;} int getJconst{return j;} }; 编译时发现有一处语法错误,对这个错误最准确的描述是( )。

    A.函数9etK试图访问基类的私有成员变量k

    B.在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private

    C.类MyDerived缺少一个无参的构造函数

    D.类MyDerived的构造函数没有对基类数据成员k进行初始化


    正确答案:A
    默认继承方式为私有继承,私有继承将基类的公用成员和保护成员都变为r私有成员,基类的私有成员依然属于基类私有,派生类不能访问基类的私有成员。所以A选项正确。