C++ Primer---- 奇怪的 protected 成员
来源:互联网 发布:砸金蛋程序源码 编辑:程序博客网 时间:2024/05/18 06:37
protected 成员在 C++ Primer 第四版中有如下描述:
可以认为 protected 标号是 private 和 public 的混合:
1. 像 private 成员一样, protected 成员不能被类的用户访问。
2. 像 public 成员一样, protected 成员可被该类的派生类访问。
此外, protected 还有另一个重要性质:
3. 派生类只能通过派生类对象访问其基类的 protected 成员, 派生类对其基类类型对象的 protected 成员没有特殊的访问权限。
前两点比较好理解: 基类希望 protected 成员能够被派生类访问,但是又不希望类的用户访问, 所以 protected 成员的被访问权限介于 public 和 private 之间。
第三点,读起来总是感觉很绕,不知所云。
其实是以下的这个意思:
在派生类的定义中:可以通过派生类的对象访问 这个派生类对象的 protected 成员, 而不能通过基类的对象直接访问 protected 成员。。
注意, *this 其实也是一个派生类对象(它绑定了当前的派生类对象),所以在派生类定义中,可以直接访问本对象的基类的 protected 成员。
class Derivative :... Base{
..................派生类中
}
不知道大家理解没有?? 看了下面的例子,想必大伙就能明白了。。
/** * @file protected-member.cc * @brief test usage of protected member * @author shoulinjun@126.com * @version 0.1.00 * @date 2014-03-19 */#include <iostream>using namespace std;class Base{public: Base(int x=0): pro(x){}protected: int pro;};class Derivative : public Base{public: Derivative(int x=0): Base(x) {} void Print(Derivative &d, Base &b){ cout << "this->protected: " << pro << endl; cout << "d.protected: " << d.pro << endl; // error not allowed to access base.pro // cout << "b.protected: " << b.pro << endl; }};int main(void){ Base b(0); Derivative d1(1), d2(2); d1.Print(d2, b); // error // cout << b.pro << endl; // cout << d1.pro << endl; return 0;}
2 0
- C++ Primer---- 奇怪的 protected 成员
- C++ primer中的protected 成员深入理解
- 基类的protected成员
- 【足迹C++primer】20、类的静态成员
- c++primer之类(类的静态成员)
- C/C++基础之:类成员变量的修饰public/private/protected的区别
- 类的成员 protected和 private 区别
- protected 成员值得注意的易错点
- 奇怪的c语言
- VS2012奇怪的成员变量名字
- c++primer 12.6 静态类成员
- 第二遍C++primer->const成员函数
- 《C++ Primer 4th》面向对象编程读书笔记---protected成员
- c++模板类派生:派生类访问基类中的public 和protected成员的一些问题
- 奇怪的c语言声明
- c#很奇怪的代码
- 奇怪的C++operator重载
- 奇怪的C语言代码
- Android通过HTTP协议实现多线程下载
- uitextField 设置边框颜色
- PN结
- hdu4279 找规律+小想法
- Android 编程下的代码混淆
- C++ Primer---- 奇怪的 protected 成员
- pat 1065
- 四周 项目4 扩展2 文件与工资操作
- 2011淘宝春季实习生招聘笔试题
- iOS7 UI改变总结 & iOS7适配遇到的一些问题
- Eclipse中10个最有用的快捷键组合
- 兼容W3C与IE的API方法汇总(持续补充中)
- toj 2196 Nuanran's Idol II multiset应用
- 5.数列排序