c++不同继承方式的访问权限
2016-03-13 16:32
351 查看
1. 对每一种继承方式而言,基类中的成员以相关的权限作为派生类中的成员,但权限只降不升.
Child1试图以public的方式继承Father中的成员A,B,C.
最终权限: A-----public B-----protected C-----private
所以,只有A能以public的权限过继给Child,而B成员和C成员均以它们原来的权限:protected, private过继给Child.
Child2试图以protected的方式继承Father中的成员A,B,C.
最终权限: A----protected B----protected C----private
Child3试图以private的方式继承Father中的成员A,B,C.
最终权限: A----private B----private C----private
2. 在派生类中无法访问其基类原有的private成员.
故在Child1,Child2,Child3类中均无法访问C,但均可访问A,B.
3. 在类的对象中,无法访问类的protected和private成员,
故Child1的对象无法访问B,C, Child2和Child3的对象无法访问A,B,C.
Child1试图以public的方式继承Father中的成员A,B,C.
最终权限: A-----public B-----protected C-----private
所以,只有A能以public的权限过继给Child,而B成员和C成员均以它们原来的权限:protected, private过继给Child.
Child2试图以protected的方式继承Father中的成员A,B,C.
最终权限: A----protected B----protected C----private
Child3试图以private的方式继承Father中的成员A,B,C.
最终权限: A----private B----private C----private
2. 在派生类中无法访问其基类原有的private成员.
故在Child1,Child2,Child3类中均无法访问C,但均可访问A,B.
3. 在类的对象中,无法访问类的protected和private成员,
故Child1的对象无法访问B,C, Child2和Child3的对象无法访问A,B,C.
class Father{ public: A; protected: B; private: C; }; class Child1:public Father{ }; class Child2:protected Father{ }; class Child3:private Father{ }; Child1 child1; Child2 child2; Child3 child3;
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- PostgreSQL教程(三):表的继承和分区表详解
- Lua面向对象之类和继承浅析
- Lua和C语言的交互详解
- 浅析Ruby中继承和消息的相关知识
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构