【发布时间】:2018-03-20 22:21:11
【问题描述】:
派生类D d的对象如何在Base B的朋友类中被访问?
既然D 和F 之间没有关系,那么怎么可能
访问朋友类中D对象的私有成员b_var?
#include <iostream>
#include <string>
using namespace std;
class B { //Base class
int b_var;
friend class F;
};
class D : public B { //Derived Class
int d_var;
};
class F { //This class is a friend class of B
public: //So it should access objects of B Not Derived Class
void func(D &d) { // object LIke in example d
d.b_var = 5;
cout << "I accessed D's Private Member b_var :" << d.b_var;
}
};
int main()
{
cout << "fine";
}
【问题讨论】:
-
b_var仍然是friendsF类的成员。继承与它无关,请注意d_var将无法访问F。 -
@George:你确定“b_var 仍然是 F 好友类的成员”吗?
b_var是私有的,我认为private成员不可继承。 -
@Raindrop7 是的,我确定。如果
private成员不可继承,那么继承将毫无用处,因为父级的任何私有状态都会丢失。 -
@George 不!我不同意。派生的子类不能访问基类的私有数据。 (基类的私有数据不是派生类的一部分)。