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 abstrataIBase
om 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);