C++面试题:类得继承与访问

下列程序编译时会出现错误,请根据行号选择错误位置( )
#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)继承。(私有成员不能被继承)

  • 公有继承就是将基类的公有成员变为自己的公有成员,基类的保护成员变为自己的保护成员。
  • 保护继承是将基类的公有成员和保护成员变成自己的保护成员。
  • 私有继承是将基类的公有成员和保护成员变成自己的私有成员。
三种继承方式的比较:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值