继承访问权限的一些资料总结1

C++类继承关系中访问控制之变化

bauldeng 4/1/2006


根据C++语法规则,以及在MS VC++6.0中的例子试验,可以得出如下结论。


1. B从A public继承
A之public区=>B之public区;
A之protected区=>B之protected区;
A之private区对B不可见;


2. B从A private继承
A之public区=>B之private区;
A之protected区=>B之private区;
A之private区对B不可见;


3. B从A protected继承 (比较少见!)
A之public区=>B之protected区;
A之protected区=>B之protected区;
A之private区对B不可见。


这里,

1) A, B是两个C++类,B从A继承而来,换言之,A是基类,B是派生类;

2) public区意味着声明为public访问权限的数据成员和成员函数,
protected区、private区的含义依此类推;

3)“=>”表示“继承为”或者“转变为”。


以上规则1和2两点,比较有把握;对于3,资料较少,不知道是不是C++的普遍规则,还是与具体的C++编译器有关?


附记:

水平访问:声明了某类的一个对象,访问其成员函数和数据成员;一般只有public区(不含protected区!)的成员函数和数据成员,可以被水平访问。


垂直访问:一个类从某个基类派生,派生类访问基类的成员函数和数据成员;一般只有public和protected区的成员函数和数据成员,可以被垂直访问。

例题:

已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:
class P : protected O {…};
class Q : public O {…};
关于方法F1的描述中正确的是___(34)___;关于方法F2韵描述中正确的是___(35)___;关于方法F3的描述中正确的是___(36)___。
(34)A.方法F1无法被访问 B.只有在类O内才能访问方法F1
C.只有在类P内才能访问方法F1 D.只有在类Q内才能访问方法F1
(35)A.类O、P和Q的对象都可以访问方法F2 B.类P和Q的对象都可以访问方法F2
C.类0和Q的对象都可以访问方法F2 D.只有在类P内才能访问方法F2
(36)A.类0、P和Q的对象都可以访问方法F3 B.类0、P和Q的对象都不可以访问方法F3
C.类0和Q的对象都可以访问方法F3 D.类P和Q的对象都可以访问方法F3。
看看你能否解释一下这几个问题的答案。BCB 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值