今天遇到一个关于友元和继承的问题:
首先类的友元是不能被继承的,因为友元不是类的成员。但当A是B的友元类时,C是A的派生类又会发生什么情况呢?C能否继承A的友元属性?
#include<iostream>
using namespace std;
class A
{
private:
int a;
public:
A(int n=0):a(n){}
~A(){}
friend class B;
};
class B
{
public:
void showA(A &st){cout<<st.a<<endl;}
};
class C:public B
{
};
int main()
{
A c1(5);
B c2;
c2.showA(c1);
C c3;
c3.showA(c1);
}
上面的代码能够正常的输出,说明C可以通过基类A的方法访问到B的私有成员。
但是如果想在c中定义新的方法来访问B的私有成员就行不通了。