基於前乙個作業題目,改寫 animal 類和 dog 類;
根據使用者輸入的數值,建立相應個數的 animal 物件和 dog 物件,然後再銷毀。
用類的靜態資料成員記錄存活物件的數量。用建構函式和析構函式來更新存活物件的數量(10分)
題目內容:
編寫兩個類
dog類繼承animal類;
animal類和dog類各有乙個預設建構函式,分別輸出字串 「animal」和「dog」。輸出字串後換行
在類中(哪個類由你自己決定)新增乙個靜態資料成員,用於計算執行時刻存活的所有animal和dog物件的數量。所謂「存活的物件數量」是指建立的物件數量減去銷毀的物件數量。注意:該靜態資料成員要統計所有的animal和dog物件的數量,不僅僅是animal的數量或者僅僅dog物件的數量。
新增上述靜態資料成員的getter函式
你需要修改類中的建構函式和析構函式,使得上述靜態資料成員能夠正確地反映當前系統中存活的物件的數量。注意析構函式中不輸出任何資訊
編寫主函式
在主函式中接受使用者輸入的乙個整數n(大於0);
建立兩個vector物件v1 和 v2 (你可以用其它名字),分別儲存animal物件的指標和dog物件的指標。
按照先銷毀乙個animal物件,緊接著再銷毀乙個 dog 物件這樣交替次序,將v1和v2中指標所指向的物件都銷毀(提示,可以用陣列下標運算子訪問vector物件中儲存的指標。使用delete運算子銷毀物件)。每銷毀一輪animal和dog物件後,輸出所有物件的數量並換行(也就是銷毀乙個animal物件,再銷毀乙個dog物件,然後輸出所有物件的數量並換行;之後再執行下一輪銷毀操作,直到執行n輪後結束)。
程式中除了接受使用者輸入的整數之外,沒有任何其它輸入語句;
程式中除了建構函式和存活物件數量的輸出之外,沒有任何其它輸出。
輸入格式:
乙個大於零的整數
輸出格式:
輸出多行資訊,最後一行是空行
沒有任何其它提示資訊
輸入樣例:
輸出樣例:
animal
animal
doganimal
animal
doganimal
animal
dog注意:輸出結果的最後一行是空行
時間限制:500ms記憶體限制:32000kb
按照題目給的樣例,**可能是這樣
#include
#include
class
animal
~animal()
static
int counter;};
class
dog:
public animal};
int animal::counter
;int
main()
; std::vector>v2
;int n;
std::cin >> n;
for(
int i
;i < n;i++
)for
(int i
;i < n; i++
)return0;
}
但是題目中有這一句:
注意:該靜態資料成員要統計所有的animal和dog物件的數量,不僅僅是animal的數量或者僅僅dog物件的數量。我覺得**(dog類)應該是
class
dog:
public animal
~dog()
};
不過這樣就和樣例不符了,求各路大神指教 關於繼承中的析構函式
class clxbase clxbase virtual void dosomething class clxderived public clxbase clxderived void dosomething int main clxderived p new clxderived 情況 clx...
關於繼承中的析構函式
include using namespace std class base 輸出 derived f base f 為什麼呼叫了基類的析構函式,虛函式表就改變了?這樣的問題,有乙個最實用的方法,就是去跟一下彙編的 當然了這需要你懂一點點的組合語言.問題的原因就是 當你呼叫基類的析構函式d.base...
C 繼承中的建構函式和析構函式
1 繼承中建構函式和析構函式呼叫順序 a 呼叫父類建構函式 b 呼叫其他成員的建構函式 c 呼叫子類建構函式 d 析構呼叫順序相反。include using namespace std class base public base cout base中的預設構造函式呼叫 2 子類預設呼叫父類的預設...