c++ - 从父类继承时覆盖变量

标签 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。这是有原因的吗?

最佳答案

在 C++ 中,您不能覆盖字段。只有方法可以被覆盖。因此,您在 Bar 类中声明的变量 m 是一个新字段,它隐藏了基类 Foo 版本米

如果你想从Bar访问Foom,那么你可以使用这个语法:

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

它明确告诉编译器写入 Foom 版本。或者,您可以删除 this-> 并只写

Bar::Bar(){
    Foo::m = 10.0f;
}

希望这对您有所帮助!

关于c++ - 从父类继承时覆盖变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874345/

相关文章:

c++ - 如何使用 QCoreApplication::postEvent 注入(inject)合成输入事件

jQuery OOP 基础知识

java - 重用对象的最佳方式

python:抽象基类'__init__():初始化还是验证?

c++ - 运算符优先级 C++

c++ - SSE 内在函数复制寄存器中的字节

c++ - QKeyPress - 在 Qt 中模拟按键

c++ - 简化双链转换

c# - 如何提取使用 "using"关键字且一次性的方法

c++ - 在 C++ 中刷新流的后果和优缺点