解决友元类(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();//这里显示的调用父类的函数 }

目录
相关文章
|
7月前
|
编译器
匿名类型(Class)
匿名类型是无需预定义的,直接通过 `new {}` 创建实例的类型,编译器自动推断并生成只读属性和相关方法如`ToString()`。常用于简单场景,但ValueTuple提供更好的性能且无需额外类型。
|
6月前
类和对象(8):explicit,static成员,友元,内部类
类和对象(8):explicit,static成员,友元,内部类
|
7月前
|
算法 C++
C++中的友元类(Friend Classes)技术详解
C++中的友元类(Friend Classes)技术详解
327 0
|
Java
【继承之extends关键字和super关键字】
【继承之extends关键字和super关键字】
66 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(二)
我是柠檬叶子C。上一章我们一步步地实现了日期类,这一章我们继续往后讲解知识点,比如说友元啊,初始化列表啊、静态成员和内部类,把这些拿出来讲一讲。还是保持最近养成的写作习惯,在讲解知识点之前,我都会用一个例子或问题进行引入,做到"循序渐进" 地讲解。
123 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(二)
|
编译器 C语言 C++
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(一)
我是柠檬叶子C。上一章我们一步步地实现了日期类,这一章我们继续往后讲解知识点,比如说友元啊,初始化列表啊、静态成员和内部类,把这些拿出来讲一讲。还是保持最近养成的写作习惯,在讲解知识点之前,我都会用一个例子或问题进行引入,做到"循序渐进" 地讲解。
126 0
【C++要笑着学】友元 | 初始化列表 | 关键字explicit | 静态成员static | 内部类(一)
C++:类的static成员,友元和构造函数初始化列表
C++:类的static成员,友元和构造函数初始化列表
|
安全 编译器 C++
C++:类中const修饰的成员函数
C++:类中const修饰的成员函数
|
前端开发 开发者
class-实例方法和静态方法|学习笔记
快速学习 class-实例方法和静态方法
|
前端开发 开发者
class-子类访问父类上的实例方法|学习笔记
快速学习 class-子类访问父类上的实例方法
124 0