/*【項目1】根據給出的基類Animal和main()函數。1、根據給出的main()函數和運行結果的提示,設計出相關的各個類,注意觀察運行結果,提取出每個類中需要的資料成員,並匹配上需要的成員函數。2、顯然,Animal設計為抽象類別更合適,Animal不需要能夠執行個體化,是專門作基類使用的。改造程式,使Animal設計為抽象類別,這時main()函數中p = new Animal();將出錯,將此行刪除。3、每一個Animal的衍生類別都有一個“名字”資料成員,這一共有的成員完全可以由基類提供改造上面的程式,將這一資料成員作為抽象類別Animal資料成員被各衍生類別使用。下面是給出的基類Animal和main()函數:*//* * Copyright (c) 2013, 煙台大學電腦學院 * All rights reserved. * 檔案名稱:test.cpp * 作者:邱學偉 * 完成日期:2013 年 5 月 31 日 * 版本號碼:v1.0 * 輸入描述:無 * 問題描述: * 程式輸出:* 問題分析: * 演算法設計:略 */ #include <iostream>using namespace std;class Animal{public: virtual void cry() { cout<<"不知哪種動物,讓我如何學叫?"<<endl; }};class Mouse:public Animal{public: Mouse(string n,char s); void cry();private: string name; char sex;};Mouse::Mouse(string n,char s){ name=n; sex=s;}void Mouse::cry(){ if(sex=='m') cout<<"我叫"<<name<<",我是一隻男老鼠,我的叫聲是”吱吱吱“"<<endl; if(sex=='f') cout<<"我叫"<<name<<",我是一隻女老鼠,我的叫聲是”吱吱吱“"<<endl;}class Cat:public Animal{public: Cat(string n,char s); void cry();private: string name; char sex;};Cat::Cat(string n,char s):name(n),sex(s) {}void Cat::cry(){ if(sex=='m') cout<<"我叫"<<name<<",我是一隻公貓,我的叫聲是”喵喵喵“"<<endl; if(sex=='f') cout<<"我叫"<<name<<",我是一隻母貓,我的叫聲是”喵喵喵“"<<endl;}class Dog:public Animal{public: Dog(string n); void cry();private: string name;};Dog::Dog(string n):name(n) {}void Dog::cry(){ cout<<"我是一隻狗,我的叫聲是“汪汪汪”"<<endl;}class Giraffe:public Animal{public: Giraffe(string n,char s); void cry();private: string name; char sex;};Giraffe::Giraffe(string n,char s):name(n),sex(s) {}void Giraffe::cry(){ cout<<"我叫"<<name<<",我是一隻長頸鹿,我的脖子太長,發不出聲音來"<<endl;}int main( ){ Animal *p; p = new Animal(); p->cry(); Mouse m1("Jerry",'m'); p=&m1; p->cry(); Mouse m2("Jemmy",'f'); p=&m2; p->cry(); Cat c1("Tom",'f'); p=&c1; p->cry(); Dog d1("Droopy"); p=&d1; p->cry(); Giraffe g1("Gill",'m'); p=&g1; p->cry(); return 0;}