问题 单项选择题

若有以下程序:
#include <iostream>
using namespace std;
class Base

private:
int x;
protected:
int y;
public:
int z;
void setx(int i)

x=i;
int getx ()

return x;

;
class Inherit : private Base

private:
int m;
public:
int p;
void setvalue(int a, int b, intc, int d)

setx (

A.;
y=b;
z=c;
m=d;

void display()

cout<<getx () <<","<<y<<","<<z<<","<<m<<end1;

;
int main ( )

Inherit A;
A.setvalue(1,2,3,4);
A.display ();
return 0;
A) 1,2,3,4

B.产生语法错误

C.4,3,2,1

D.2,3,4,5

答案

参考答案:A

解析: 本题考核私有继承中类成员的访问权限。当类的继承方式为私有继承时,基类公有成员和保护成员都以私有成员属性出现在派生类中。私有派生类的成员对其基类成员的访问权和公共派生的方式相同,但是,由私有派生的类声明的对象,不能访问任何基类的成员。
本题中,基类Base中的保护成员y和公有成员setx和getx,经过私有继承以后,称为派生类Inherit的私有成员,所以可以在派生类Inherit的函数成员中对它们进行访问。
类Inherit中的函数成员setvalue和display都是公有成员,所以可以通过Inherit的对象对它们进行访问。
本程序的功能是对类中各数据成员进行赋值,然后查看赋值是否正确。

单项选择题
问答题 简答题