Digamos que tenemos una clase base abstracta IBase
con métodos virtuales puros (una interfaz).¿Es posible pasar clases derivadas por referencia a una función que toma la clase base como un parámetro
Luego derivamos CFoo
, CFoo2
de la clase base.
Y tenemos una función que sabe cómo trabajar con IBase.
Foo(IBase *input);
El escenario habitual en estos casos es la siguiente: la gestión
IBase *ptr = static_cast<IBase*>(new CFoo("abc"));
Foo(ptr);
delete ptr;
Pero puntero es mejor que debe evitarse, por lo que hay una manera de utilizar las referencias en este escenario?
CFoo inst("abc");
Foo(inst);
donde Foo
es:
Foo(IBase &input);
Sí, lo que tienes en tu pregunta es ideal. – ildjarn
Sí; el polimorfismo funciona tanto para punteros como para referencias. Y deja de lanzar, por favor. No estamos en Hollywood. –