class Base
{
public:
virtual void func() const
{
cout<<"This is constant base "<<endl;
}
};
class Derived : public Base
{
public:
virtual void func()
{
cout<<"This is non constant derived "<<endl;
}
};
int main()
{
Base *d = new Derived();
d->func();
delete d;
return 0;
}
¿Por qué la salida imprime "Esta es una base constante". Sin embargo, si elimino const en la versión base de func(), se imprime "Esto no deriva de la constante"función virtual const vs función virtual no const
d-> func() debería llamar a la versión Derivada correcta, incluso cuando el Func base() sea const right ?
Posible duplicado de http://stackoverflow.com/questions/7504300, http://stackoverflow.com/questions/3827374, y http://stackoverflow.com/questions/4152799. –
posible duplicado de [función virtual que es const en la clase base y no const en el derivado] (http://stackoverflow.com/questions/7504300/virtual-function-that-is-const-in-the-base- class-and-not-const-in-the-derived) –