1. 程式人生 > >C++ 靜態變數的使用練習

C++ 靜態變數的使用練習

C5-2 數老鼠

(100/100 分數)

題目描述

請實現一個老鼠類,下面已給出程式碼模板,請根據main函式中對該類的操作,補充類實現部分完成程式碼。

該類有個公有靜態變數num記錄該類的所有物件數,主函式將會在不同語句之後輸出物件數,只有正確地實現該類,保證num正確記錄該類的物件數,才能輸出正確的結果。

#include <iostream>
using namespace std;
  
class Mouse{
/* Your code here! */
};
  
void fn(Mouse m);
  
int main()
{
    Mouse::num = 0;
    Mouse a;
    cout << Mouse::num << endl;
    Mouse b(a);
    cout << Mouse::num << endl;
    for (int i = 0; i < 10; ++i)
    {
        Mouse x;
        cout << Mouse::num << endl;
    }
    fn(a);
    cout << Mouse::num << endl;
    return 0;
}
  
void fn(Mouse m)
{
    cout << Mouse::num << endl;
    Mouse n(m);
    cout << Mouse::num << endl;
}  

輸入描述 輸出描述

主函式的輸出已經寫好

樣例輸入 樣例輸出

這裡顯然num為靜態變數,注意有一個外部函式fn呼叫,說明num是public類的,完整程式碼

#include <iostream>
using namespace std;

class Mouse {
	/* Your code here! */
public:
	static int num;
	Mouse()
	{
		num++;
	}
	Mouse(Mouse &p)
	{
		num++;
	}
	~Mouse()
	{
		num--;
	}
};

int Mouse::num = 0;
void fn(Mouse m);

int main()
{
	Mouse::num = 0;
	Mouse a;
	cout << Mouse::num << endl;
	Mouse b(a);
	cout << Mouse::num << endl;
	for (int i = 0; i < 10; ++i)
	{
		Mouse x;
		cout << Mouse::num << endl;
	}
	fn(a);
	cout << Mouse::num << endl;
	return 0;
}

void fn(Mouse m)
{
	cout << Mouse::num << endl;
	Mouse n(m);
	cout << Mouse::num << endl;
}