解决友元类(friend class)无法继承的问题

简介:

解决友元类(friend class)无法继承的问题

 

友元声明friend class是无法继承的。举例说明:class A声明class B为其友元类,也就是说class A授予class B访问class A的所有包括私有成员在内的所有成员。如果class C 继承class B.那么class C是不具备这种特权的。

 

 

但是如果我想在class C中访问class A的某个私有或者保护成员函数怎么办?

我们可以把工作交给父类。

 

#include <iostream> using namespace std; class B; class A { friend B; public: A(){}; ~A(){} protected: void Operation(){ cout << "Hello, I am here." << endl; } private: }; class B { public: B(){}; ~B(){}; virtual void Operate() { a.Operation(); } private: A a; }; class C: public B { public: C(){} ~C(){} private: }; int main(void) { C c; c.B::Operate();//这里显示的调用父类的函数 }

目录
相关文章
|
2月前
|
编译器 数据安全/隐私保护 C++
C++(十四) friend友元
友元机制允许非成员函数或类访问私有成员,提高程序效率,但会破坏封装性。友元可以是函数或类,并以关键字`friend`声明。友元函数不是成员函数,需通过对象访问私有成员。友元类使所有成员函数可访问另一个类的私有成员,常用于简化开发。友元声明位置灵活,但不影响访问控制。使用友元需注意其单向性和非传递性。
|
4月前
|
编译器 C++
【C++】类和对象⑤(static成员 | 友元 | 内部类 | 匿名对象)
📚 C++ 知识点概览:探索类的`static`成员、友元及应用🔍。
|
5月前
类和对象(8):explicit,static成员,友元,内部类
类和对象(8):explicit,static成员,友元,内部类
|
6月前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
32 2
|
6月前
|
算法 C++
C++中的友元类(Friend Classes)技术详解
C++中的友元类(Friend Classes)技术详解
261 0
|
6月前
|
存储 Java C++
【C++类和对象】探索static成员、友元以及内部类
【C++类和对象】探索static成员、友元以及内部类
|
Java
【继承之extends关键字和super关键字】
【继承之extends关键字和super关键字】
61 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(二)
我是柠檬叶子C。上一章我们一步步地实现了日期类,这一章我们继续往后讲解知识点,比如说友元啊,初始化列表啊、静态成员和内部类,把这些拿出来讲一讲。还是保持最近养成的写作习惯,在讲解知识点之前,我都会用一个例子或问题进行引入,做到"循序渐进" 地讲解。
120 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(二)
|
编译器 C语言 C++
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(一)
我是柠檬叶子C。上一章我们一步步地实现了日期类,这一章我们继续往后讲解知识点,比如说友元啊,初始化列表啊、静态成员和内部类,把这些拿出来讲一讲。还是保持最近养成的写作习惯,在讲解知识点之前,我都会用一个例子或问题进行引入,做到"循序渐进" 地讲解。
116 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(一)