- 相關(guān)推薦
構(gòu)造函數(shù)與析構(gòu)函數(shù)
實(shí)驗(yàn)?zāi)康?br />
觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程。
學(xué)習(xí)類的聚集使用方法。
使用VC++的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。
實(shí)驗(yàn)任務(wù)
定義一個(gè)CPU類,包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,定義為enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7},frequency為單位是MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。(在實(shí)驗(yàn)三完成的程序的基礎(chǔ)上繼續(xù)做)
定義一個(gè)簡單的Computer類,有數(shù)據(jù)成員芯片(cpu)、內(nèi)存(ram)、光驅(qū)(cdrom)等等,有兩個(gè)公有成員函數(shù)run、stop。cpu為CPU類的一個(gè)對象,ram為RAM類的一個(gè)對象,cdrom為CDROM類的一個(gè)對象,定義并實(shí)現(xiàn)這個(gè)類。(在實(shí)驗(yàn)三完成的程序的基礎(chǔ)上繼續(xù)做)
(選做)設(shè)計(jì)一個(gè)用于人事管理的People(人員)類?紤]到通用性,這里只抽象出所有類型人員都具有的屬性:number(編號(hào))、sex(性別)、birthday(出生日期)、id(身份證號(hào))等等。其中“出生日期”定義為一個(gè)“日期”類內(nèi)嵌子對象。用成員函數(shù)實(shí)現(xiàn)對人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)。(在實(shí)驗(yàn)三完成的程序的基礎(chǔ)上繼續(xù)做)
實(shí)驗(yàn)步驟
首先定義枚舉類型CPU_Rank,例如enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7},再定義CPU類,包含等級(jí)(rank)、頻率(frequency)、電壓(voltage)等私有數(shù)據(jù)成員,定義成員函數(shù)run、stop,用來輸出提示信息,在構(gòu)造函數(shù)和析構(gòu)函數(shù)中也可以輸出提示信息。在主程序中定義一個(gè)CPU的對象,調(diào)用其成員函數(shù),觀察類對象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_1.cpp。
使用debug調(diào)試功能觀察程序ab4_1.cpp的運(yùn)行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。參考程序如下:
//lab4_1.cpp
#include <iostream.h>
enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7};
class CPU
{
private:
CPU_Rank rank;
int frequency;
float voltage;
public:
CPU (CPU_Rank r, int f, float v)
{
rank = r;
frequency = f;
voltage = v;
cout << "構(gòu)造了一個(gè)CPU!" << endl;
}
~CPU () { cout << "析構(gòu)了一個(gè)CPU!" << endl; }
CPU_Rank GetRank() const { return rank; }
int GetFrequency() const { return frequency; }
float GetVoltage() const { return voltage; }
void SetRank(CPU_Rank r) { rank = r; }
void SetFrequency(int f) { frequency = f; }
void SetVoltage(float v) { voltage = v; }
void Run() {cout << "CPU開始運(yùn)行!" << endl; }
void Stop() {cout << "CPU停止運(yùn)行!" << endl; }
};
void main()
{
CPU a(P6,300,2.8);
a.Run();
a.Stop();
}
調(diào)試操作步驟如下:
單擊Build | Start Debug | Step Into命令,或按下快捷鍵F11,系統(tǒng)進(jìn)入單步執(zhí)行狀態(tài),程序開始運(yùn)行,一個(gè)DOS窗口出現(xiàn),此時(shí)Visual Studio中光標(biāo)停在main()函數(shù)的入口處;
從Debug菜單或Debug工具欄中單擊Step Over,此時(shí),光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對象的初始化;
單擊Step Into,程序準(zhǔn)備執(zhí)行CPU類的構(gòu)造函數(shù);
連續(xù)單擊Step Over,觀察構(gòu)造函數(shù)的執(zhí)行情況,直到執(zhí)行完構(gòu)造函數(shù),程序回到主函數(shù);
此時(shí)程序準(zhǔn)備執(zhí)行CPU對象的run()方法,單擊Step Into,程序進(jìn)入run()成員函數(shù),連續(xù)單擊Step Over,直到回到main()函數(shù);
繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認(rèn)識(shí);
再試試Debug菜單欄中別的菜單項(xiàng),熟悉Debug的各種方法。
首先定義CPU類(可使用第二題中的CPU類)、RAM類、CDROM類。再定義Computer類:定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中定義一個(gè)Computer的對象,調(diào)用其成員函數(shù),觀察類對象及其成員變量的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_2.cpp。
使用debug調(diào)試功能觀察lab4_2.cpp程序的運(yùn)行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序,特別注意觀察成員變量的構(gòu)造與析構(gòu)順序。
【構(gòu)造函數(shù)與析構(gòu)函數(shù)】相關(guān)文章:
函數(shù)的零點(diǎn)03-07
函數(shù)概念的“源”與“流03-29
二次函數(shù)在函數(shù)解答題中的考查的問題和策略11-16
函數(shù)概念教學(xué)的幾點(diǎn)思考11-22
矩陣函數(shù)的性質(zhì)及其應(yīng)用03-07
函數(shù)概念教學(xué)的現(xiàn)狀分析03-29
在Delphi中巧用Windows 的API函數(shù)03-20
論隨機(jī)變量函數(shù)的分布03-07