View Code
主要是通過設計一個學生類,然後通過類函數進行操作,設計了兩個全局變量,一個用來統計生成的學生對象數,另一個為學號起始數。裡面最主要的是加深了對析構函數和構造函數的理解,在下面一段代碼中,進行分析。
GStudent(){Stu_num = Stu_count+chushihua;Stu_count++;};
~GStudent(){Stu_count--;};
這段代碼我們可以看到是構造函數和析構函數,裡面分別對全局變量——學生計數變量進行了操作,每創建(銷毀)一個學生對象就會將計數器+1(-1),在調用時我們這樣來看
GStudent *STU[ STU[Stu_count-] = (*STU[Stu_count-]).Regester_stu(name,grade,banji,lwtittle,t_name,mark);
首先定義了一個學生類的數組指針,用來進行分配內存,便於空間管理。第二句創建了一個學生對象。但是這個時候我們看到sut_count原本為
0的,但是創建了一個學生對象後,變為1,這個時候將數組指針的STU[1],進行了動態內存分配,而不是STU[0]。(原本以為是先執行完了第二句,也就是跟STU[0]分配了空間才+1的,但是調試的時候發現STU[0]沒有被分配空間,反倒是從STU[1]開始的.經過思考發現,原來是忽略了構造函數會優先於任何程序執行的特點。)
至於析構函數,就簡單多了,只負責將學生計數器-1就行,在執行delete命令進行內存釋放後會自動執行,讓學生人數-1.