对C 中的类成员的点感到困惑

  • 本文关键字:成员 c++ member-pointers
  • 更新时间 :
  • 英文 :


下面的三个类:

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进行测试。结果是相同的。

as @herbsutter在C 指针中回答了Visual Studio中的类数据成员,

&Derive::var1的类型是int Base::*而不是int Derive::*

&Derive::var2的类型是int Base2::*而不是int Derive::*

相关内容

  • 没有找到相关文章

最新更新