我有一个简单的课程
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。有这个原因吗?
答案 0 :(得分:4)
在C ++中,您无法覆盖字段。只能覆盖方法。因此,您在类m
中声明变量Bar
是一个隐藏基类Foo
的{{1}}版本的新字段。
如果您想从m
访问Foo
的{{1}},那么您可以使用以下语法:
m
明确告诉编译器写入Bar
的{{1}}版本。或者,您可以删除Bar::Bar(){
this->Foo::m = 10.0f;
}
并写下
Foo
希望这有帮助!