To dziedziczenie jest zupełnie nielogiczne, bo to zwierze powinno być klasą nadrzędną. Ale zostawiając tak jak jest:
1. Ponowna deklaracja zmiennych w klasie dziedziczącej jest bezsensowna.
string nazwa;
int ilosc_nog;
To można usunąć z klasy Zwierze.
2. Zamiast umieszczać domyślne wartości "siema" i 3 to stwórz konstruktor bezargumentowy, który je umieści te wartości wewnątrz konstruktora.
3. Z tego co pamiętam, takie wywołanie:
Zwierze x;
zawsze wywołuje konstruktor domyślny. Dlatego wywołuj tak:
Zwierze x();