possível passar classes derivadas por referência a uma função que toma a classe base como parâmetro

Dizemos que temos uma classe base abstrataIBaseom métodos virtuais puros (uma interface

Então derivamosCFoo, CFoo2 da classe base.

E nós temos uma função que sabe trabalhar com o IBas

Foo(IBase *input);

O cenário usual nesses casos é o seguinte:

IBase *ptr = static_cast<IBase*>(new CFoo("abc"));
Foo(ptr);
delete ptr;

Mas é melhor evitar o gerenciamento de ponteiros, então existe uma maneira de usar referências nesse cenári

CFoo inst("abc");
Foo(inst);

OndeFoo é

Foo(IBase &input);