003:程式設計填空:統計動物數量
阿新 • • 發佈:2020-08-29
程式碼填空,使得程式能夠自動統計當前各種動物的數量
樣例輸入輸出就不放了
這個題目出現在北大c++Mocc第三週,第三週的內容是類與物件的進階,相關內容有建構函式、封閉類、友元等。最初以為這個題目可以通過友元去完成,但是在main()函式初始化時,出現了一個使用友元類給基類初始化的操作的,友元顯然不能完成這一點,那麼只好通過繼承完成了。
#include <iostream> using namespace std; // 在此處補充你的程式碼 class Animal{ public: static int number; Animal() { number++; } virtual ~Animal() //正常情況,子類祖先類的解構函式都是虛擬的, //這樣刪除祖先類指標、子類物件的時候, //可正確同時呼叫子類和祖先類的解構函式 { number--; } }; int Animal::number=0;//初始化 class Dog:public Animal{ public: static int number;//狗的數量 Dog()//建構函式 { number++; }~Dog()//解構函式 { Dog::number--; } }; int Dog::number=0;//初始化 class Cat:public Animal{ public: static int number;//狗的數量 Cat() { number++; } ~Cat() { Cat::number--; } }; int Cat::number=0;//初始化 voidprint() { cout << Animal::number << " animals in the zoo, " << Dog::number << " of them are dogs, " << Cat::number << " of them are cats" << endl; } int main() { print(); Dog d1, d2; Cat c1; print(); Dog* d3 = new Dog(); Animal* c2 = new Cat; Cat* c3 = new Cat; print(); delete c3; delete c2; delete d3; print(); }