您的位置:首页 > 编程语言 > C语言/C++

C++中public,protected,private访问小结

2006-11-07 09:32 393 查看
今天偶然在论坛上,看到一帖对于C++中,public,protected,private的访问问题:

=================================================

已知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。

==================================================

该题目涉及到两个知识点:
第一:private,public,protected方法的访问范围.
private: 只能由该类中的方法访问,不能被该类的对象访问.
protected: 可以被该类中的方法和其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的方法和其友元函数访问,也可以由该类的对象访问
第二:类的继承后方法属性变化:
使用private继承,父类的所有方法在子类中变为private;
使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;
使用public继承,父类中的方法属性不发生改变;
由上面两个分析,不难得出上述问题的正确答案:
(34) B 私有方法只能在本类中访问,子类继承父类的共有,保护方法,但不能访问父类的私有方法;
(35) C 公有方法可以被类的对象访问,但使用protected继承后,子类中的方法都为保护方法,不能被该子类的对象访问,使用public继承子类对象可以访问子类中的公有方法;
(36) B protected方法不能被自类的对象访问;子类采用protected和public方法继承,父类中protected方法仍然为protected方法,无法使用子类的对象访问,同时父类本身的对象也无法访问;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: