#include <iostream>
using namespace std;
class Duck {
public:
virtual void quack() = 0;
};
class BigDuck : public Duck {
public:
// void quack(); (uncommenting will make it compile)
};
void BigDuck::quack(){ cout << "BigDuckDuck::Quack\n"; }
int main() {
BigDuck b;
Duck *d = &b;
d->quack();
}
El código anterior no se compila. Sin embargo, cuando declaro la función virtual en la subclase, compila bien.Por qué tengo que redeclarar una función virtual al anular [C++]
Si el compilador ya tiene la firma de la función que sobrescribirá la subclase, ¿por qué es necesaria una redeclaración?
¿Algún conocimiento?
¿Qué error de compilador obtiene? –
Aunque en este ejemplo vemos una clase base abstracta, la pregunta también es válida en general. – xtofl
Podría, aunque sin saber qué compilador está utilizando, podría no obtener el mismo error (o ninguno) :) –