-5

以下の3クラス:

class Base
{
public:
    int var1;
};
class Base2
{
public:
    int var2;
};
class Derive:public Base,public Base2
{
public:
    int var3;
};
int main()
{

    printf("%d %d %d %d %d", &Base::var1, &Base2::var2, &Derive::var1, &Derive::var2, &Derive::var3);
    int Derive::* p = &Derive::var1;
    Derive d;
    d.var1 = 2;
    printf("%d", d.*p);
}

出力結果は0 0 0 0 8 2です。&Derive::var1との結果について混乱してい&Derive::var2ます。なぜそれらはそれぞれ と ではなく等しいの0ですか?04

注: gcc4.7.1 と vs2010 でテストしています。そして、結果は同じです。

4

1 に答える 1