C++基类成员函数访问派生类对象的,继承的私有的基类成员。很奇怪的现象,在网上也没有找到相应的说明。
主要是问题太难描述了。
简单来说,基类定义了private的数据成员baseNum,派生类无论如何继承,都不能访问基类的baseNum。
那么,为什么在公有继承的时候,在基类的成员函数中,就可以访问到baseNum呢?
show you the code:
class Derived;
class Base
{
public:
void func(Derived d);
private:
int baseNum;
};
class Derived : public Base
{
};
void Base::func(Derived d)
{
cout << d.baseNum << endl;
}
int main() {
Base b;
Derived d;
b.func(d);
return 0;
}
若将Derived的继承方式改为protected或private,则func(Derived d)函数均会报错。
不知为何,求解。
同时,不知C++基类成员函数访问派生类对象的基类成员时的访问权限是如何规定的。