#include <string>
#include <cstdint>
#include <iostream>

class Animal
{
private:
    std::uint8_t m_uchLegs;
    std::string m_strSpecies;

public:
    Animal(std::uint8_t uchLegs = 0, const std::string& strSpecies = "")
        : m_uchLegs(uchLegs), m_strSpecies(strSpecies) {};

    std::uint8_t getLegs() const;
    std::string getSpecies() const { return m_strSpecies; }
    void presentYourself() const;
};

class Cat : public Animal
{
public:
    Cat() : Animal(4, "Cat") { }
};

int main()
{
    Cat c;
    Animal& a = c;
    std::cout << "a's species: " << a.getSpecies() << '\n';
}
