Наследование и 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 хочет напечатать базовый класс вместе с производным классом. Я спрашиваю о динамической рассылке с указателями и ссылками.

0 ответов

Другие вопросы по тегам