使用 'override' 关键字

Using 'override' keyword

我的代码出现以下错误:

error C3668: 'B::getData': method with override specifier 'override' did not override any base class methods

#include<iostream>
#include <tuple>
using namespace std;

class A {
public:
    int a;

    int getData() {
        return a;
    }
};

class B : public A {
public:
    int b;
    B() {
        b = 100;
    }

    int getData() override {
        return b;
    }
};

int main() {
    B b;
    cout << b.getData() << endl;
}

为什么会出现错误,我该如何解决??

您在 A 中的原始函数必须是 virtual 才能成为 overrided。

class A {
public:
    int a;

    virtual int getData() {
        return a;
    }
};

关于 override 的更多信息是 here. And related: info on virtual and final