考虑以下小程序:
#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__
或其他一些?
答案 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;
}
};