Mega Code Archive
Deriving Abstract Classes from Other Abstract Classes
#include
using namespace std;
enum COLOR { Red, Green, Blue, Yellow, White, Black, Brown } ;
class Animal
{
public:
Animal(int);
virtual ~Animal() { cout << "Animal destructor...\n"; }
virtual int GetAge() const { return itsAge; }
virtual void SetAge(int age) { itsAge = age; }
virtual void Sleep() const = 0;
virtual void Eat() const = 0;
virtual void Reproduce() const = 0;
virtual void Move() const = 0;
virtual void Speak() const = 0;
private:
int itsAge;
};
Animal::Animal(int age):
itsAge(age)
{
cout << "Animal constructor..." << endl;
}
class Mammal : public Animal
{
public:
Mammal(int age):Animal(age){ cout << "Mammal constructor..." << endl;}
virtual ~Mammal() { cout << "Mammal destructor..." << endl;}
virtual void Reproduce() const{ cout << "Mammal reproduction depicted..."<Speak();
pAnimal->Eat();
pAnimal->Reproduce();
pAnimal->Move();
pAnimal->Sleep();
delete pAnimal;
pAnimal = new Horse(4,Black);
pAnimal->Speak();
pAnimal->Eat();
pAnimal->Reproduce();
pAnimal->Move();
pAnimal->Sleep();
delete pAnimal;
pAnimal = new Fish (5);
pAnimal->Speak();
pAnimal->Eat();
pAnimal->Reproduce();
pAnimal->Move();
pAnimal->Sleep();
delete pAnimal;
return 0;
}