Cuáles son las reglas para la búsqueda de funciones virtuales?
#include <iostream>
class base
{
public:
virtual void print (int a)
{
std::cout << "a: " << a << " base\n";
}
virtual void print (int a, int b)
{
std::cout << "base\n";
}
};
class derived : public base
{
public:
virtual void print (double d)
{
std::cout << "derived\n";
}
};
int main ()
{
int i = 10;
double d = 10000.0;
base *b = new derived ();
b->print (i, i);
b->print (d);
return 0;
}
La salida de esta función es:
base
a: 10000 base
Por québ->print (d)
no invoque la implementación de la clase derivada y realiza una conversión estática en'd'
para proporcionar una coincidencia con la implementación de la clase base? ¿Qué regla se aplica aquí durante la búsqueda de funciones virtuales?