Przykład polimorfizmu działającego ze strukturą danych w C ++ na podstawie przykładu php

Uczę się polimorfizmu i znam php.

Natknąłem się na ten doskonały przykładhttps://stackoverflow.com/a/749738/80353. przedstawione poniżej.

Jak napisać ten sam kod, ale w C ++?

Mam problem z samodzielnym napisaniem, ponieważ uważam (może się mylę), że struktury danych w C ++ są surowe.

Musisz mieć wszystkie elementy wewnątrz listy połączonej lub tablicy w C ++ tego samego typu.

Uważam więc, że musisz przechowywać kota i psa jako ich klasę bazową w strukturze danych.

Jak więc napisać ten fragment kodu php do fragmentu kodu C ++, który używa ścisłej struktury danych, aby mógł przechowywać tylko elementy jednego typu danych?

class Animal {
    var $name;
    function __construct($name) {
        $this->name = $name;
    }
}

class Dog extends Animal {
    function speak() {
        return "Woof, woof!";
    }
}

class Cat extends Animal {
    function speak() {
        return "Meow...";
    }
}

$animals = array(new Dog('Skip'), new Cat('Snowball'));

foreach($animals as $animal) {
    print $animal->name . " says: " . $animal->speak() . '<br>';
}

questionAnswers(3)

yourAnswerToTheQuestion