Можно ли передавать производные классы по ссылке на функцию, принимающую базовый класс в качестве параметра

Скажем, у нас есть абстрактный базовый класс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);

Ответы на вопрос(2)

Ваш ответ на вопрос