从父类继承时覆盖变量

时间:2012-01-15 23:33:51

标签: c++ oop

我有一个简单的课程

class Foo {
    public:
        float m;
        Foo();
}

Foo::Foo(){
    this->m = 1.0f;
}

然后我用

扩展它
class Bar: public Foo {
    public:
        float m;
        Bar()
}

Bar::Bar(){
    this->m = 10.0f;
}

然后我实例化Bar(),但Bar.m仍为1.0f。有这个原因吗?

1 个答案:

答案 0 :(得分:4)

在C ++中,您无法覆盖字段。只能覆盖方法。因此,您在类m中声明变量Bar是一个隐藏基类Foo的{​​{1}}版本的新字段。

如果您想从m访问Foo的{​​{1}},那么您可以使用以下语法:

m

明确告诉编译器写入Bar的{​​{1}}版本。或者,您可以删除Bar::Bar(){ this->Foo::m = 10.0f; } 并写下

Foo

希望这有帮助!