#include <iostream>

using namespace std;

class Mammal{
    char* name;
    int numLegs;
public:
    Mammal(const char* nameIn);
    ~Mammal(){delete[] name;}
    virtual void print(){cout << "Mammal: " << numLegs << endl;}
};

class Cow: public Mammal{
    char* breed;
public:
    Cow(const char* breedIn);
    ~Cow(){delete[] breed;}
    void print(){cout << "Cow: " << numLegs << endl;}
};

int main(){

    Mammal * mp = new Cow("Elsie");
    mp->print();
    delete mp; 

    return 0;
}

Mammal::Mammal(const char* nameIn = "Bossie"):
    numLegs(4)
{
    if (nameIn){
	name = new char[1 + strlen(nameIn)];
	strcpy(name, nameIn);
    }
    else name = NULL;
}

Cow::Cow(const char* breedIn = "Belted Galloway"){
    if (breedIn){
	breed = new char[1 + strlen(breedIn)];
	strcpy(breed, breedIn);
    }
    else breed = NULL;
}

//Add an accessor fcn so that the program compiles.

