Exemplo de polimorfismo trabalhando com estrutura de dados em C ++ baseado no exemplo php

Estou aprendendo polimorfismo e estou familiarizado com php.

Eu me deparei com este excelente exemplohttps://stackoverflow.com/a/749738/80353. reproduzido abaixo.

Como faço para escrever o mesmo código, mas em C ++?

Eu tenho um problema para escrever isso porque eu acredito (eu posso estar errado) que as estruturas de dados em C ++ são estritas.

Você deve ter todos os elementos dentro de uma lista vinculada ou matriz em C ++ do mesmo tipo.

Então eu acredito que você precisa armazenar o gato e o cachorro como sua classe base na estrutura de dados.

Então, como eu escrevo este trecho de código php em um trecho de código C ++ que usa uma estrutura de dados estrita que só pode armazenar elementos de um tipo de dados?

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