рассмотрит следующую небольшую программу:Предупреждения, когда функция в производном классе не может переопределить виртуальную функцию базового класса
#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__
или некоторые такие?
http://en.cppreference.com/w/cpp/language/override – Pradhan