以下の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
ですか?0
4
注: gcc4.7.1 と vs2010 でテストしています。そして、結果は同じです。