#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
、データ メンバーを持たないようにする必要があります。しかし、奇妙なことに、そもそもasが変数を持つべきではないz.protMember
からアクセスできます。私はどこか間違っていますか?dummy_fn()
z
protMember