Ejemplo de polimorfismo que funciona con la estructura de datos en C ++ basado en el ejemplo php

Estoy aprendiendo polimorfismo y estoy familiarizado con php.

Me encontré con este excelente ejemplo dehttps://stackoverflow.com/a/749738/80353. reproducido a continuación.

¿Cómo escribo el mismo código, pero en C ++?

Tengo un problema al escribirlo porque creo (puedo estar equivocado) que las estructuras de datos en C ++ son estrictas.

Debe tener todos los elementos dentro de una lista enlazada o matriz en C ++ del mismo tipo.

Así que creo que necesitas almacenar el gato y el perro como su clase base en la estructura de datos.

Entonces, ¿cómo escribo este fragmento de código PHP en un fragmento de código C ++ que utiliza una estructura de datos estricta que solo puede almacenar elementos de 1 tipo de datos?

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>';
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta