Наследование и ostream, как вывести производный класс с указателем на базу?
Рассмотрим следующий код:
#include <iostream>
using namespace std;
class Base
{};
class Derived : public Base
{};
ostream& operator <<(ostream& os, const Base& base)
{
os << "Base";
return os;
}
ostream& operator <<(ostream& os, const Derived& derived)
{
os << "Derived";
return os;
}
int main() {
Base* derived = new Derived();
cout << *derived;
delete derived;
return 0;
}
Это печатает Base
пока хотел бы распечатать Derived
, Есть ли способ, чтобы он работал таким образом, не создавая никакой другой функции (например, virtual print()
в обоих классах)?
РЕДАКТИРОВАТЬ: Наследование и переопределение оператора ostream в C++ не является дубликатом, потому что там OP хочет напечатать базовый класс вместе с производным классом. Я спрашиваю о динамической рассылке с указателями и ссылками.