注册 登录
编程论坛 C++教室

[HELP][子类替换父类成员变量的问题]

gongzaijun 发布于 2010-01-07 14:40, 1077 次点击
下面这段程序

class A
{
public:
    int _a;
    A()
    {
        _a = 1;
    }
    void print()
    {
        printf("%d", _a);
    }
};

class B : public A
{
public:
    int _a;
    B()
    {
        _a = 2;
    }
};

int main(int argc, char* argv[])
{
    B b;

    b.print();
}

麻烦谁能帮我解释一下,为什么结果是1吗?

我理解建B的对象时会先执行A的构造函数,但B的构造也应该被执行了呀,
我什么_a会等于父类的1呢?谢谢。
1 回复
#2
gongzaijun2010-01-07 15:10
搞明白了。

B类有两个成员变量A::_a和B::_a。
Printf是A类的函数,访问的是A::_a;
因为A类不可能访问其子类的成员变量。
1