第十四周專案一:Animal類(修改1)
阿新 • • 發佈:2018-12-29
/* * 程式的版權和版本宣告部分 * Copyright (c)2012, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: Animal.cpp * 作 者:李巧麗 * 完成日期:2013 年5月30日 * 版本號: v1.0 * 對任務及求解方法的描述部分:略 * 輸入描述:略 * 問題描述:(1)根據main()函式給出的註釋提示,設計出相關的各個類。 (2)顯然,Animal設計為抽象類更合適,Animal不需要能夠例項化,是專門作基類使用的。 改造程式,使Animal設計為抽象類,這時main()函式中p = new Animal();將出錯,將此行刪除。 (3)每一個Animal的派生類都有一個“名字”資料成員,改造上面的程式, 將這一資料成員作為抽象類Animal資料成員被各派生類使用。 */ #include <iostream> #include<string> using namespace std; class Animal { public: virtual void cry() { cout<<"不知哪種動物,讓我如何學叫?"<<endl; } }; class Mouse:public Animal { public: virtual void cry() { cout<<"我叫"<<name<<",是一隻"<<((sex=='m')?"男":"女")<<"老鼠,我的叫聲是:吱吱吱!"<<endl; } Mouse(string nam,char s) {name=nam;sex=s;} private: string name; char sex; }; class Cat:public Animal { public: virtual void cry() { cout<<"我叫Tom,是一隻貓,我的叫聲是:喵喵喵!"<<endl; } Cat(string nam) {name=nam;} private: string name; }; class Dog:public Animal { public: virtual void cry() { cout<<"我叫Droopy,是一條狗,我的叫聲是:汪汪汪!"<<endl; } Dog(string nam) {name=nam;} private: string name; }; class Giraffe :public Animal { public: virtual void cry() { cout<<"我叫"<<name<<",是一隻"<<((sex=='m')?"男":"女")<<"長頸鹿,我的脖子太長,發不出聲音來!"<<endl; } Giraffe (string nam,char s) {name=nam;sex=s;} private: string name; char sex; }; 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"); p=&c1; p->cry(); Dog d1("Droopy"); p=&d1; p->cry(); Giraffe g1("Gill",'m'); p=&g1; p->cry(); return 0; }
執行結果: