C++友元(2) - 继承与友元
来源:互联网 发布:站台气候数据 编辑:程序博客网 时间:2024/04/29 09:01
1.基类中的友元函数行为
C++中, 友元是不会继承的。如果基类有一个友元函数,则此函数不会成为子类的友元函数。例如,下面程序会编译失败,因为函数show()是基类A的友元函数,但无法访问子类B的私有数据。
#include <iostream>using namespace std;class A{ protected: int x; public: A() { x = 0;} friend void show();};class B: public A{ public: B() : y (0) {} private: int y;};void show(){ B b; cout << "The default value of A::x = " << b.x; // 编译失败。无法访问类'B'中的私有数据 cout << "The default value of B::y = " << b.y;}int main(){ show(); return 0;}
编译失败。
2.子类中的友元函数的行为
反之,如果在子类中定义了一个友元函数,则它可以访问基类中的public以及protected数据。
因为子类B是公有继承A的,A中的public以及protected数据可以被B的对象访问。
如下面例子所示:
#include <iostream>using namespace std;class A{protected: int x; public: A() { x = 22; z = 33; } int z;};class B : public A{public: B() : y(0) {} friend void show();private: int y;};void show(){ B b; cout << "The default value of A::x = " << b.x << std::endl; cout << "The default value of A::z = " << b.z << std::endl; cout << "The default value of B::y = " << b.y << std::endl;}int main(){ show(); return 0;}输出:
The default value of A::x = 22
The default value of A::z = 33
The default value of B::y = 0
0 0
- 友元与继承
- C++友元(2) - 继承与友元
- 友元关系与继承
- C++ 友元与继承
- [C++]友元关系的继承性
- 友元friend和继承(C++)
- 友元和继承
- 类、友元、继承
- 继承、友元机制。
- c++ 友元关系与继承
- C++继承与友元、继承与类型转换
- C++笔记: 继承,友元
- 继承 之 友元函数
- 友元关系和继承
- C++ 友元和继承
- C++ 继承、友元、权限
- 友元关系的继承
- 友元函数的继承
- 请尊重我们的劳动成果,北京光明天下信息服务有限公司
- 一个简单操作实现00
- 第八章 朴素贝叶斯分类法
- IDF实验室:牛刀小试--摩斯密码
- 国内计算机视觉与机器学习研究团队
- C++友元(2) - 继承与友元
- leetcode231-Power of Two(判断一个整数n是否为2的方幂)
- 第八章 基于规则的分类
- IDF实验室:牛刀小试--聪明的小羊
- 第九章 贝叶斯信念网络分类
- 通过 itms:services://? 在线安装ipa ,跨过app-store
- IDF实验室:牛刀小试--ASCII码而已
- 第九章 后向传播算法(分类)
- 回文自动机(回文树)