(1)友元关系不能继承。
(2)基类的友元对派生类的成员没有特殊的访问权限。
(3)如果基类被授予友元关系,
举例说明: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 << "Hehe!!!" << 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();//调用父类的函数
}
运行结果:
Hehe!!!