下列程序编译时会出现错误,请根据行号选择错误位置( )
#include <iostream>
usingnamespace std;
classA{
inta1;
protected:
inta2;
public:
inta3;
};
classB: publicA{
intb1;
protected:
intb2;
public:
intb3;
};
classC:privateB{
intc1;
protected:
intc2;
public:
intc3;
};
intmain(){
B obb;
C obc;
cout<<obb.a1;//1
cout<<obb.a2;//2
cout<<obb.a3;//3
cout<<obc.b1;//4
cout<<obc.b2;//5
cout<<obc.b3;//6
cout<<obc.c3;//7
return0;
}
正确答案: A D 你的答案: 空 (错误)
1,2
2,5,7
3,4,7
4,5,6
答案解析:
派生类可以继承定义在基类中的成员,但是派生类的成员函数不一定有权访问从基类继承而来的成员,访问权限受下面因素影响。
- 继承方式;
- 基类成员的访问权限(即public/private/protected)。
继承有三种方式,即公有(Public)继承、私有(Private)继承、保护(Protected)继承。(私有成员不能被继承)
- 公有继承就是将基类的公有成员变为自己的公有成员,基类的保护成员变为自己的保护成员。
- 保护继承是将基类的公有成员和保护成员变成自己的保护成员。
- 私有继承是将基类的公有成员和保护成员变成自己的私有成员。
三种继承方式的比较: