C++ primer中的protected 成员深入理解
来源:互联网 发布:sql 教程 编辑:程序博客网 时间:2024/05/20 04:27
C++ primer中的protected 成员深入理解
protected成员:
(《C++ primer》P475给出的概念,因为翻译的问题,发现很多地方“类的用户”是指我们常说的“对象”)
- 像private成员一样,protected成员不能被类的用户(也称为对象) 访问。
- 像public成员一样,protected成员可被该类的派生类访问。
- 派生类只能通过派生类对象访问其基类的protected对象,派生类对其基类类型对象的protected成员没有特殊的访问权限。
对于第三条,个人认为很难理解。经过仔细思考并通过实际程序验证,算是基本理解,我的理解如下:
首先,假设Apple类有个成员函数memfun(cont Apple &a, const Fruit &f )。则在函数memfun中可以直接调用自身从基类继承来的price,也可以通过形参a访问a的price ( a.price ),这里a的类型也可以为FujiApple,但要经过测试a的类型不可以为orange。同时对于形参f也是被拒绝访问其price 成员的( f.price )。
经过测试最后总结如下:
一个类(假如既有基类又有派生类),则该类成员可以访问自身的protected成员或从基类继承来的protected成员,也可以访问为该类类型对象的protected成员,同时也可以访问其类型为派生类对象的protected成员。但不可以访问类型为基类对象的protected成员,及基类其它派生类的protected成员。
从上图可以看出类继承中的protected成员访问路线为下垂形,即:一个类只可以对自身类或同类类型对象protected访问,也可以访问其派生类从基类继承的protected成员,但是不可以访问派生类自身定义的protected成员。
转自:plkong ,感谢原作者的帮助!
- C++ primer中的protected 成员深入理解
- C++ Primer---- 奇怪的 protected 成员
- 深入理解私有成员
- 深入理解子类继承父类中的成员变量问题
- 小心使用Protected(深入理解)
- 深入理解C语言中的free函数。
- 深入理解C语言中的移位运算
- 深入理解C语言中的const
- 深入理解Objective-C中的对象
- 深入理解C语言中的移位运算
- C语言中的流程控制深入理解
- 深入理解C代码中的注释
- 深入理解C中的数组指针
- 类中的static 数据成员和c++ primer中提到的static的深入思考
- [C] 结构体中的伸缩型数组成员——《C Primer Plus》
- 深入理解成员函数指针
- c++模板类派生:派生类访问基类中的public 和protected成员的一些问题
- 关于java中的protected一点理解
- 反外挂系统设计方案
- 字符数组和strcyp函数
- Socket 基本编程
- EXTJS4.x之可编辑的grid
- Linux – cp: omitting directory 复制文件失败
- C++ primer中的protected 成员深入理解
- C语言一次性读取文件全部内容
- TCP与UDP的特性和区别
- WSAAsyncSelect模型
- 【leetcode】Valid Number
- Web 服务器、Servlet容器、Tomcat服务器
- oracle 10g rman 备份与恢复 之四
- android Camera 中如何修改缩放变焦参数
- Map集合,Collections,Arrays,增强for