#include<iostream>
using namespace std;
class uvw;
class abc{
private:
int privateMember;
protected:
int protMember;
public:
int publicMember;
};
class def : private abc{
public:
void dummy_fn();
};
class uvw: public def{
};
void def::dummy_fn()
{
abc x;
def y;
uvw z;
cout << z.protMember << endl; // This can be accessed and doesn't give a compile-error
}
Из того, что я понимаю, после def
наследует конфиденциально от abc
, protMember
и publicMember
становится закрытым в def
. Итак, теперь, когда uvw
наследуется от def
, он не должен иметь никаких элементов данных. Но мы можем странно получить доступ к z.protMember
из dummy_fn()
, где в качестве z
не должно быть переменной protMember
. Я где-то ошибаюсь?