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