当派生类中的函数无法覆盖基类中的虚函数时发出警告

时间:2015-09-03 01:23:56

标签: c++ gcc g++ compiler-warnings

考虑以下小程序:

#include <iostream>

class Base {
public:
    virtual void MyFunction() const {
        std::cout << "This is Base" << std::endl;
    }
};

class Derived : public Base {
public:
    virtual void MyFuntcion() {
        std::cout << "This is Derived" << std::endl;
    }
};

int main() {
    Base *p = new Derived();
    p->MyFunction();
    return 0;
}

它使用g++ -Wall -Wextra与编译器进行干净编译,但是当你运行它时,由于Derived中函数名中的拼写错误,它会输出“This is Base”。

现在在java或C#中,如果在函数上放置@override标记,您将收到编译器关于拼写错误的警告。有没有办法和gcc做类似的事情?也许是一个神奇的__attribute__或其他一些?

1 个答案:

答案 0 :(得分:0)

C ++ 11也引入了var t = FirstTask(); t = t.ContinueWith( a => SecondTask() ); t = t.ContinueWith( a => ThirdTask() ); await t;

override
class Derived : public Base {
public:
    void MyFuntcion() override {
        std::cout << "This is Derived" << std::endl;
    }
};