1. 程式人生 > 實用技巧 >003:程式設計填空:統計動物數量

003:程式設計填空:統計動物數量

程式碼填空,使得程式能夠自動統計當前各種動物的數量

樣例輸入輸出就不放了

這個題目出現在北大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;//初始化 void
print() { 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(); }