// Inheritance demo for CSE 143 // Copy constructors, etc. omitted to save space // HP 10/00 #include #include using namespace std; class Critter { // generic creature (abstract) public: Critter(string name); virtual string speak( ) = 0; virtual string getName( ); private: string name; // name of creature }; Critter::Critter(string name) { this->name = name; } string Critter::getName( ) { return name; } // Class Bird class Bird: public Critter { public: Bird(string name); virtual string speak( ); }; Bird::Bird(string name) : Critter(name) { } string Bird::speak( ) { return "chirp!"; } // Cows class Cow: public Critter { public: Cow(string name); virtual string speak( ); }; Cow::Cow(string name) : Critter(name) { } string Cow::speak( ) { return "Help! I've been tipped, and I can't get up!!"; } // test program // print critter c's name and sound void describe(Critter &c) { cout << "A critter named " << c.getName( ) << " says: " << c.speak( ) << endl;; } int main( ) { Bird tweety("Tweety"); Cow clarance("Clarance"); describe(tweety); describe(clarance); cout << endl; return 0; }