Можно ли передавать производные классы по ссылке на функцию, принимающую базовый класс в качестве параметра
Скажем, у нас есть абстрактный базовый классIBase
с чисто виртуальными методами (интерфейс).
Тогда мы выводимCFoo
, CFoo2
из базового класса.
И у нас есть функция, которая знает, как работать с IBase.
Foo(IBase *input);
Обычный сценарий в этих случаях выглядит следующим образом:
IBase *ptr = static_cast<IBase*>(new CFoo("abc"));
Foo(ptr);
delete ptr;
Но управления указателями лучше избегать, так есть ли способ использовать ссылки в таком сценарии?
CFoo inst("abc");
Foo(inst);
гдеFoo
является:
Foo(IBase &input);