C++上機(jī)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三_第1頁
C++上機(jī)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三_第2頁
C++上機(jī)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三_第3頁
C++上機(jī)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三_第4頁
C++上機(jī)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)三_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

./實(shí)驗(yàn)三類與對(duì)象實(shí)驗(yàn)?zāi)康?.掌握類的定義和使用2.掌握類的定義和對(duì)象的聲明3.復(fù)習(xí)具有不同訪問屬性的成員的訪問方式4.觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程5.學(xué)習(xí)類的組合使用方法6.使用VC++的debug調(diào)試功能觀察程序流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。2.實(shí)驗(yàn)要求1.定義一個(gè)CPU類,包含等級(jí)〔rank、頻率〔frequency、電壓〔voltage等屬性,有兩個(gè)公有成員函數(shù)run、stop。其中,rank為枚舉類型CPU_Rank,定義為enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency為單位是MHz的整型數(shù),voltage為浮點(diǎn)型的電壓值。觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序。2.定義一個(gè)簡單的Computer類,有數(shù)據(jù)成員芯片〔cpu、內(nèi)存〔ram、光驅(qū)〔cdrom等等,有兩個(gè)公有成員函數(shù)run、stop。cpu為CPU類的一個(gè)對(duì)象,ram為RAM類的一個(gè)對(duì)象,cdrom為CDROM類的一個(gè)對(duì)象,定義并實(shí)現(xiàn)這個(gè)類。3.〔選做設(shè)計(jì)一個(gè)用于人事管理的People<人員>類??紤]到通用性這里只抽象出所有類型人員都具有的屬性:number〔編號(hào)、sex〔性別、birthday〔出生日期、id〔身份證號(hào)等等。其中"出生日期"定義為一個(gè)"日期"類內(nèi)嵌子對(duì)象。用成員函數(shù)實(shí)現(xiàn)對(duì)人員信息的錄入和顯示。要求包括:構(gòu)造函數(shù)和析構(gòu)函數(shù)、拷貝構(gòu)造函數(shù)、內(nèi)聯(lián)成員函數(shù)、組合。3.實(shí)驗(yàn)內(nèi)容1.首先定義枚舉類型CPU_Rank,例如enumCPU_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的對(duì)象,調(diào)用其成員函數(shù),觀察類對(duì)象的構(gòu)造與析構(gòu)順序,以及成員函數(shù)的調(diào)用。程序名:lab4_1.cpp2.使用debug調(diào)試功能觀察程序lab4_1.cpp的運(yùn)行流程,跟蹤觀察類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序。3.調(diào)試操作步驟如下:1單擊Build|StartDebug|StepInto命令,或按下快捷鍵F11,系統(tǒng)進(jìn)入單步執(zhí)行狀態(tài),程序開始運(yùn)行,一個(gè)DOS窗口出現(xiàn),此時(shí)VisualStudio中光標(biāo)停在main<>函數(shù)的入口處;2從Debug菜單或Debug工具欄中單擊StepOver,此時(shí),光標(biāo)下移,程序準(zhǔn)備執(zhí)行CPU對(duì)象的初始化;3單擊StepInto,程序準(zhǔn)備執(zhí)行CPU類的構(gòu)造函數(shù);4連續(xù)單擊StepOver,觀察構(gòu)造函數(shù);5此時(shí)程序準(zhǔn)備執(zhí)行CPU對(duì)象的run<>函數(shù),單擊StepInto,程序進(jìn)入run<>成員函數(shù),連續(xù)單擊StepOver,直到回到main<>函數(shù)。6繼續(xù)執(zhí)行程序,參照上述的方法,觀察程序的執(zhí)行順序,加深對(duì)類的構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員函數(shù)的執(zhí)行順序的認(rèn)識(shí)。7再試試Debug菜單欄中別的菜單項(xiàng),熟悉Debug的各種方法。4.首先定義CPU類〔可使用第二題中的CPU類、RAM類、CDROM類。再定義Computer類;定義私有數(shù)據(jù)成員cpu、ram、cdrom,定義公有成員函數(shù)run、stop,可在其中輸出提示信息。在主程序中定義一個(gè)Computer的對(duì)象,調(diào)用其成員函數(shù),觀察類對(duì)象及其成員變量的構(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)順序。4.思考題:1.如何定義一個(gè)類?class類名稱{public:外部接口protected:保護(hù)型成員private:私有成員};2.如何定義類的構(gòu)造函數(shù)和析構(gòu)函數(shù)?class類名稱{public:類名〔形參表;//構(gòu)造函數(shù)聲明類名〔類名&對(duì)象名;//拷貝構(gòu)造函數(shù)聲明~類名〔;//析構(gòu)函數(shù)聲明……};類名::類名〔形參表//構(gòu)造函數(shù)實(shí)現(xiàn){函數(shù)體}類名::類名〔類名&對(duì)象名//拷貝構(gòu)造函數(shù)實(shí)現(xiàn){函數(shù)體}類名::~類名〔//析構(gòu)函數(shù)實(shí)現(xiàn){函數(shù)體}3.類的各成員函數(shù)的執(zhí)行順序是怎樣的?成員函數(shù)只有被調(diào)用時(shí)才會(huì)執(zhí)行。4.類組合時(shí)對(duì)象的構(gòu)造順序是怎樣的?當(dāng)創(chuàng)建一個(gè)類對(duì)象時(shí),如果類中具有內(nèi)嵌對(duì)象成員,那么各個(gè)內(nèi)嵌對(duì)象將首先被自動(dòng)創(chuàng)建。因此在構(gòu)造數(shù)據(jù)成員時(shí),首先調(diào)用內(nèi)嵌對(duì)象的構(gòu)造函數(shù),調(diào)用順序按照內(nèi)嵌對(duì)象在組合類的定義中出現(xiàn)的次序,之后再執(zhí)行本類構(gòu)造函數(shù)的函數(shù)體,對(duì)本類的數(shù)據(jù)成員進(jìn)行構(gòu)造。5.源程序1.lab4_1.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public: //構(gòu)造函數(shù) CPU<CPU_Rankr,intf,floatv> { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個(gè)CPU!"<<endl; } //拷貝構(gòu)造函數(shù) CPU<CPU&p> { rank=p.rank; frequency=p.frequency; voltage=p.voltage; cout<<"拷貝構(gòu)造了一個(gè)CPU!"<<endl; } //析構(gòu)函數(shù) ~CPU<>{cout<<"析構(gòu)了一個(gè)CPU!"<<endl;} //get CPU_RankGetRank<>{returnrank;} intGetFrequency<>{returnfrequency;} floatGetVoltage<>{returnvoltage;} //set voidSetRank<CPU_Rankr>{rank=r;} voidSetFrequency<intf>{frequency=f;}voidSetVoltage<floatv>{voltage=v;}voidRun<>{cout<<"CPU開始運(yùn)行!"<<endl;} voidStop<>{cout<<"CPU停止運(yùn)行!"<<endl;}};voidmain<>{ CPUa<P6,300,2.8>; a.Run<>; a.Stop<>; CPUb<a>; b.Run<>; b.Stop<>;}lab4_2.cpp#include<iostream>usingnamespacestd;enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};enumRAM_Rank{G1=1,G2,G4,G8};enumCDROM_Speed{X24=1,X36,X40,X50};enumCDROM_Rank{M700=1,M750,M800};classCPU{private: CPU_Rankrank; intfrequency; floatvoltage;public: //構(gòu)造函數(shù) CPU<CPU_Rankr,intf,floatv> { rank=r; frequency=f; voltage=v; cout<<"構(gòu)造了一個(gè)CPU!"<<endl; } //拷貝構(gòu)造函數(shù) CPU<CPU&p> { rank=p.rank; frequency=p.frequency; voltage=p.voltage; cout<<"拷貝構(gòu)造了一個(gè)CPU!"<<endl; } //析構(gòu)函數(shù) ~CPU<>{cout<<"析構(gòu)了一個(gè)CPU!"<<endl;} //get CPU_RankGetRank<>{returnrank;} intGetFrequency<>{returnfrequency;} floatGetVoltage<>{returnvoltage;} //set voidSetRank<CPU_Rankr>{rank=r;} voidSetFrequency<intf>{frequency=f;}voidSetVoltage<floatv>{voltage=v;}};classRAM{private: RAM_RankramRank; floatspeed;public: //構(gòu)造函數(shù) RAM<RAM_Rankr,floats> { ramRank=r; speed=s; cout<<"構(gòu)造了一個(gè)RAM!"<<endl; } //拷貝構(gòu)造函數(shù) RAM<RAM&p> { ramRank=p.ramRank; speed=p.speed; cout<<"拷貝構(gòu)造了一個(gè)RAM!"<<endl; } //析構(gòu)函數(shù) ~RAM<>{cout<<"析構(gòu)了一個(gè)RAM!"<<endl;} //get RAM_RankgetRank<>{returnramRank;} floatgetSpeed<>{returnspeed;} //set voidsetRank<RAM_Rankr>{ramRank=r;}voidsetSpeed<floats>{speed=s;}};classCDROM{private: CDROM_SpeedcdromSpeed; CDROM_RankcdromRank;public: //構(gòu)造函數(shù) CDROM<CDROM_Rankr,CDROM_Speeds> { cdromRank=r; cdromSpeed=s; cout<<"構(gòu)造了一個(gè)CDROM!"<<endl; } //拷貝構(gòu)造函數(shù) CDROM<CDROM&p> { cdromRank=p.cdromRank; cdromSpeed=p.cdromSpeed; cout<<"拷貝構(gòu)造了一個(gè)CDROM!"<<endl; } //析構(gòu)函數(shù) ~CDROM<>{cout<<"析構(gòu)了一個(gè)CDROM!"<<endl;} //get CDROM_RankgetRank<>{returncdromRank;} CDROM_SpeedgetSpeed<>{returncdromSpeed;} //set voidsetRank<CDROM_Rankr>{cdromRank=r;}voidsetSpeed<CDROM_Speeds>{cdromSpeed=s;}};classComputer{private: CPUcpu; RAMram; CDROMcdrom;public: //構(gòu)造函數(shù) Computer<CPUc,RAMr,CDROMcd> :cpu<c>,ram<r>,cdrom<cd> { cout<<"構(gòu)造了一個(gè)Computer!"<<endl; } //拷貝構(gòu)造函數(shù) Computer<Computer&p> :cpu<p.cpu>,ram<p.ram>,cdrom<p.cdrom> { cout<<"拷貝構(gòu)造了一個(gè)Computer!"<<endl; } //析構(gòu)函數(shù) ~Computer<>{cout<<"析構(gòu)了一個(gè)Computer!"<<endl;} voidRun<inta>{cout<<"Computer"<<a<<"開始運(yùn)行!"<<endl;} voidStop<inta>{cout<<"Computer"<<a<<"停止運(yùn)行!"<<endl;}};voidmain<>{ CPUcpu1<P6,300,2.8>; RAMram1<G4,200>; CDROMcdrom1<M800,X50>; Computercomputer1<cpu1,ram1,cdrom1>; computer1.Run<1>; computer1.Stop<1>; Computercomputer2<computer1>; computer2.Run<2>; computer2.Stop<2>;}3.lab4_3.cpp#include<iostream>#include<cstring>usingnamespacestd;classDate{private: intyear; intmonth; intday;public: Date<>; Date<inty,intm,intd>; Date<Date&p>; ~Date<>; voidsetDate<>; voidshowDate<>;};classPeople{private: intnumber; charsex[8]; Datebirthday; charid[25];public: People<>; People<intn,char*s,Dateb,char*i>; People<People&p>; ~People<>; voidsetNumber<>; voidsetSex<>; voidsetId<>; voidshowPeople<>;};//Date構(gòu)造函數(shù)Date::Date<>{}Date::Date<inty,intm,intd> { year=y; month=m; day=d; }Date::Date<Date&p>{ year=p.year; month=p.month; day=p.day;}Date::~Date<>{}//Date成員函數(shù),設(shè)置出生年月日voidDate::setDate<> { inty,m,d; cout<<"Inputtheyear:"; cin>>y; cout<<"Inputthemonth:"; cin>>m; cout<<"Inputtheday:"; cin>>d; year=y; month=m; day=d; }//Date內(nèi)聯(lián)成員函數(shù),輸出Date信息inlinevoidDate::showDate<> { cout<<"Birthdayis"<<year<<"年"<<month<<"月"<<day<<"日"<<endl; }//People構(gòu)造函數(shù)People::People<>{}People::People<intn,char*s,Dateb,char*i>{ number=n; strcpy<sex,s>; birthday=b; strcpy<id,i>;}People::People<People&p>{ number=p.number;strcpy<sex,p.sex>; birthday=p.birthday; strcpy<id,p.id>;}People::~People<>{}//People成員函數(shù),設(shè)置各類數(shù)據(jù)voidPeople::setNumber<>{ cout<<"Pleaseinputtheperson'snumber:"; cin>>number;}voidPeople::setSex<>{ cout<<"Inputsex:"; cin.getline<sex,8,'\n'>;}voidPeople::setId<>{ cout<<"Inputid:"; cin.getline<id,25,'\n'>;}//People內(nèi)聯(lián)成員函數(shù),輸出人員

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論