【发布时间】:2015-09-03 01:23:56
【问题描述】:
考虑以下小程序:
#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 干净地编译,编译器几乎看不到它,但是当你运行它时,它会打印“This is Base”,因为 Derived 中的函数名称有错字。
现在在 java 或 C# 中,如果您在函数上放置 @override 标记,您将收到编译器关于拼写错误的警告。有没有办法用 gcc 做类似的事情?也许是魔法__attribute__ 或类似的?
【问题讨论】:
标签: c++ gcc g++ compiler-warnings