#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. Я где-то ошибаюсь?