![C實(shí)驗(yàn)報(bào)告格式_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/c1ceb506-20c8-43af-bec4-801aa734302e/c1ceb506-20c8-43af-bec4-801aa734302e1.gif)
![C實(shí)驗(yàn)報(bào)告格式_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/c1ceb506-20c8-43af-bec4-801aa734302e/c1ceb506-20c8-43af-bec4-801aa734302e2.gif)
![C實(shí)驗(yàn)報(bào)告格式_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/c1ceb506-20c8-43af-bec4-801aa734302e/c1ceb506-20c8-43af-bec4-801aa734302e3.gif)
![C實(shí)驗(yàn)報(bào)告格式_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/c1ceb506-20c8-43af-bec4-801aa734302e/c1ceb506-20c8-43af-bec4-801aa734302e4.gif)
![C實(shí)驗(yàn)報(bào)告格式_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/c1ceb506-20c8-43af-bec4-801aa734302e/c1ceb506-20c8-43af-bec4-801aa734302e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告課程名稱:C+程序設(shè)計(jì)姓名:王鑫 實(shí)驗(yàn)名稱:C+面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)號(hào):任課教師:張明衛(wèi)專業(yè):軟件工程指導(dǎo)教師:張明衛(wèi)班級(jí):0908班實(shí)驗(yàn)成績(jī):批閱教師簽字:一、實(shí)驗(yàn)?zāi)康谋敬螌?shí)驗(yàn)所涉及并要求掌握的知識(shí)點(diǎn)。1)學(xué)習(xí)類與對(duì)象的定義、聲明及使用方法。2)學(xué)習(xí)具有不同屬性的數(shù)據(jù)成員與成員函數(shù)的訪問(wèn)方式。3)理解構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義與執(zhí)行過(guò)程。4)學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類。二、實(shí)驗(yàn)環(huán)境寫(xiě)出程序編寫(xiě)時(shí)所使用的編譯器、操作系統(tǒng)等。編譯器:Visual C+ 6.0.操作系統(tǒng):Windows XP.三、實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)過(guò)程及分析列出實(shí)驗(yàn)需要做的各個(gè)題目,并針對(duì)每個(gè)題目:1.
2、寫(xiě)出關(guān)鍵代碼(要求選出該題目最核心的代碼并加注釋);2. 描述調(diào)試的過(guò)程、調(diào)試過(guò)程中所出現(xiàn)的現(xiàn)象及解決方法,給出題目最終運(yùn)行結(jié)果;3. 對(duì)該題目進(jìn)行簡(jiǎn)短總結(jié),寫(xiě)出該題目所涉及的知識(shí)點(diǎn)。1) 下面是“平面上點(diǎn)”類的定義:class CPointprivate:int x, y;static int nCount; / nCount用于保存點(diǎn)的個(gè)數(shù)public:CPoint(int px=0, int py=0);CPoint(CPoint&);CPoint();int GetX();int GetY();void SetX(int);void SetY(int);void ShowPoi
3、nt();請(qǐng)完成該類中各成員函數(shù)的定義。該類是一個(gè)基本的類。在編寫(xiě)該類時(shí),要注意對(duì)靜態(tài)成員nCount的操作,使其能夠正確表示程序中點(diǎn)的個(gè)數(shù)。編完該類后,要在main()函數(shù)中進(jìn)行測(cè)試,分別定義CPoint類的對(duì)象、指針、引用,對(duì)各成員函數(shù)進(jìn)行調(diào)用。分析對(duì)靜態(tài)成員的調(diào)用和一般成員的調(diào)用方式有什么不同。1,本題目的核心代碼:int CPoint:nCount = 0; / 對(duì)nCount進(jìn)行初始化,靜態(tài)成員的調(diào)用CPoint:CPoint(int px, int py) / 構(gòu)造函數(shù)x = px;y = py;nCount+; / 點(diǎn)的個(gè)數(shù)累加CPoint:CPoint(CPoint&
4、p) / 對(duì)構(gòu)造函數(shù)進(jìn)行拷貝x = p.x;y = p.y;nCount+; / 點(diǎn)的個(gè)數(shù)繼續(xù)累加 CPoint:CPoint() / 析構(gòu)函數(shù)nCount-;int CPoint:GetX()return x;int CPoint:GetY()return y;void CPoint:SetX(int px1) / 設(shè)置點(diǎn)的X坐標(biāo)x = px1;void CPoint:SetY(int py1) / 設(shè)置點(diǎn)的Y坐標(biāo)y = py1;void CPoint:ShowPoint() / 輸出點(diǎn)的個(gè)數(shù)及點(diǎn)的坐標(biāo)到屏幕cout<<"點(diǎn)的個(gè)數(shù)為:"<<CPoi
5、nt:nCount<<endl;cout<<"平面點(diǎn)的坐標(biāo)為:("<<CPoint:GetX()<<","<<CPoint:GetY()<<")"<<endl;2,調(diào)試過(guò)程中所出現(xiàn)的現(xiàn)象及解決方法:在調(diào)試時(shí),程序不能運(yùn)行沒(méi)有運(yùn)行成功,經(jīng)過(guò)查閱資料后得知對(duì)靜態(tài)成員的調(diào)用必須用類名加雙冒號(hào)進(jìn)行調(diào)用,把代碼改成CPoint:nCount后,程序成功運(yùn)行。在構(gòu)造函數(shù)的聲明和定義中,都進(jìn)行了變量的賦值,結(jié)果造成編譯不通過(guò),在去掉聲明中的賦值后,才編譯通過(guò)。程序運(yùn)
6、行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過(guò)本題學(xué)到了靜態(tài)成員的調(diào)用方法以及如何構(gòu)造、析構(gòu)函數(shù)。本題目主要涉及的知識(shí)點(diǎn)有:1, 構(gòu)造函數(shù)、析構(gòu)函數(shù)和拷貝。2, 靜態(tài)成員的調(diào)用和類與對(duì)象的定義、聲明及使用方法。3, 拷貝函數(shù)和構(gòu)造函數(shù)的編寫(xiě)。4, 具有不同屬性的數(shù)據(jù)成員與成員函數(shù)的訪問(wèn)方式。5, 構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義與執(zhí)行過(guò)程。2)下面是“平面上線段”類的定義:class CLineprivate:CPoint pt1, pt2; /pt1和pt2分別代表該線段的起點(diǎn)和終點(diǎn)public:CLine();CLine(int x1,int y1,int x2,int y2);CLine(CPo
7、int p1,CPoint p2);double Distance(); /計(jì)算該線段長(zhǎng)度的成員函數(shù)void ShowLine();請(qǐng)完成該類中各成員函數(shù)的定義。并利用VC調(diào)試工具觀察含有組合關(guān)系類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。1, 本題目的核心代碼:public:CLine(); /無(wú)參構(gòu)造函數(shù)CLine(int x1,int y1,int x2,int y2):pt1(x1,y1),pt2(x2,y2) / 構(gòu)造函數(shù)初始化列表CLine(CPoint p1,CPoint p2):pt1(p1),pt2(p2) / 構(gòu)造函數(shù)初始化列表double Distance(); /計(jì)算該線段長(zhǎng)度的
8、成員函數(shù)void ShowLine();double CLine:Distance() /計(jì)算線段的長(zhǎng)度double a,b;a = (pt2.GetX() - pt1.GetX()*(pt2.GetX() - pt1.GetX();b = (pt2.GetY() - pt1.GetY()*(pt2.GetY() - pt1.GetY();return sqrt(a+b);void CLine:ShowLine() /在屏幕輸出線段長(zhǎng)度cout<<"線段的長(zhǎng)度為:"<<CLine:Distance()<<endl;2,調(diào)試過(guò)程中所出現(xiàn)的現(xiàn)
9、象及解決方法:在調(diào)試時(shí),程序先執(zhí)行nCount的構(gòu)造函數(shù),然后執(zhí)行Cline的構(gòu)造函數(shù)。在使用初始化參數(shù)列表時(shí),要根據(jù)構(gòu)造函數(shù)里的參數(shù)變量名來(lái)編寫(xiě)參數(shù)列表。程序運(yùn)行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過(guò)這個(gè)實(shí)驗(yàn),了解到了如何運(yùn)用初始化列表進(jìn)行構(gòu)造函數(shù),它可以顯示的調(diào)用基類成員,本題目涉及到的主要知識(shí)點(diǎn)是用初始化列表進(jìn)行構(gòu)造函數(shù),組合類的聲明和定義以及組合類構(gòu)造函數(shù)的初始化過(guò)程。3) 下面是“空間中點(diǎn)”類的定義:class CThreePoint:public CPointprivate:int z;public:CThreePoint();CThreePoint(int, int, in
10、t);int GetZ();void SetZ(int pz);virtual void ShowPoint();請(qǐng)完成該類中各成員函數(shù)的定義。并利用VC調(diào)試工具觀察含有繼承關(guān)系類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。分析為什么要把ShowPoint()函數(shù)設(shè)置為虛函數(shù)?有什么作用?請(qǐng)?jiān)趍ain()函數(shù)中做測(cè)試。1,本題目的核心代碼:CThreePoint:CThreePoint(int px2, int py2, int pz2) / CThreePoint的構(gòu)造函數(shù)CPoint:SetX(px2);CPoint:SetY(py2);CThreePoint:SetZ(pz2);CThreePoin
11、t:CThreePoint() / CTrheePoint的析構(gòu)函數(shù)int CThreePoint:GetZ() / 獲取并返回Z坐標(biāo)的值return z;void CThreePoint:SetZ(int pz) / 對(duì)Z坐標(biāo)的值進(jìn)行設(shè)置z = pz;void CThreePoint:ShowPoint() / 屏幕輸出點(diǎn)的坐標(biāo)cout<<"空間點(diǎn)的坐標(biāo)為:("<<CPoint:GetX()<<","<<CPoint:GetY()<<","<<CThreePoi
12、nt:GetZ()<<")"<<endl;2,調(diào)試過(guò)程中所出現(xiàn)的現(xiàn)象及解決方法:在調(diào)試過(guò)程中,程序首先執(zhí)行基類的構(gòu)造函數(shù),然后在執(zhí)行自己的構(gòu)造函數(shù)。程序運(yùn)行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過(guò)這個(gè)實(shí)驗(yàn),了解到了:1, 程序首先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行自己的構(gòu)造函數(shù),以及在繼承關(guān)系中如何編寫(xiě)構(gòu)造函數(shù)。2, 派生類對(duì)象不能直接訪問(wèn)基類繼承過(guò)來(lái)的私有成員。3, 基類將函數(shù)聲明為虛函數(shù)即可,派生類和函數(shù)的定義處可以沒(méi)有關(guān)鍵字virtual.本題目涉及的知識(shí)點(diǎn)有:定義和使用類的繼承關(guān)系,定義派生類、派生類中構(gòu)造函數(shù)的編寫(xiě)方法,和繼承關(guān)系中構(gòu)造函數(shù)的
13、執(zhí)行順序。4)定義一個(gè)基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,看看會(huì)有什么問(wèn)題,把a(bǔ)ge改為公有成員變量,還會(huì)有問(wèn)題嗎?把a(bǔ)ge改為保護(hù)成員變量呢?編程試試看。1, 本題目的核心代碼: class Animalpublic:int age;class dog: public Animalpublic:int SetAge(int n)age = 3;2,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):編寫(xiě)基類Animal時(shí),成員變量age定義為私有的。構(gòu)造派生類dog,在其成員函數(shù)SetAge(int n)中直接對(duì)age賦值時(shí),會(huì)
14、出現(xiàn)類似以下的錯(cuò)誤提示:error C2248:age:can not access private member declared in class Animal把a(bǔ)ge改為公有成員變量后重新編譯就可以了。再把a(bǔ)ge改為保護(hù)成員變量步驟相同。說(shuō)明了派生類不能調(diào)用基類的私有成員變量的變量,而可以調(diào)用基類的公有成員和保護(hù)成員。設(shè)計(jì)的知識(shí)點(diǎn)有:派生類不能訪問(wèn)基類的私有成員,可以訪問(wèn)基類的保護(hù)和公有成員。五、實(shí)驗(yàn)總結(jié)對(duì)自己的實(shí)驗(yàn)的自我剖析,總結(jié)實(shí)驗(yàn)的心得體會(huì),并提出實(shí)驗(yàn)的改進(jìn)意見(jiàn)等。在這次試驗(yàn)中,感覺(jué)自己的程序最難編寫(xiě)的地方就是類的構(gòu)造函數(shù),在經(jīng)過(guò)仔細(xì)的查閱資料和詢問(wèn)同學(xué)后,終于熟練了構(gòu)造函數(shù)的編寫(xiě)
15、,從這次試驗(yàn)中我學(xué)到了很多C+的核心知識(shí),利如函數(shù)的構(gòu)造和析構(gòu)函數(shù),構(gòu)造函數(shù)初始化列表,拷貝,派生類和基類的構(gòu)造函數(shù)執(zhí)行的先后順序等。使我們?cè)陟柟袒A(chǔ)的前提下游更大的提高。對(duì)于本實(shí)驗(yàn),雖然試驗(yàn)內(nèi)容很少,但涵蓋的知識(shí)點(diǎn)頗多,能讓同學(xué)輕松的學(xué)到很多知識(shí),但我感覺(jué)在給程序多加一些功能和達(dá)到更好的效果。能讓我們?cè)趯W(xué)到知識(shí)的同時(shí),鍛煉編寫(xiě)出色代碼的能力。六、思考題回答實(shí)驗(yàn)要求的思考題,要將原題也寫(xiě)出來(lái)。1) 構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用是什么?答:構(gòu)造函數(shù)又分為實(shí)例構(gòu)造函數(shù):實(shí)例構(gòu)造函數(shù)用于創(chuàng)建和初始化實(shí)例。私有構(gòu)造函數(shù):私有構(gòu)造函數(shù)是一種特殊的實(shí)例構(gòu)造函數(shù)。它通常用在只包含靜態(tài)成員的類中。如果類具有一個(gè)或
16、多個(gè)私有構(gòu)造函數(shù)而沒(méi)有公共構(gòu)造函數(shù),則不允許其他類(除了嵌套類)創(chuàng)建該類的實(shí)例。靜態(tài)構(gòu)造函數(shù):靜態(tài)構(gòu)造函數(shù)用于初始化類。在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)來(lái)初始化類。帶參數(shù)的構(gòu)造函數(shù)作用是為了來(lái)初始化某些值而設(shè)。析構(gòu)函數(shù):析構(gòu)函數(shù)用于銷毀類的實(shí)例。2) 什么是封裝?類是如何進(jìn)行封裝的?答:封裝就是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。封裝的目的是增強(qiáng)安全性和簡(jiǎn)化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過(guò) 外部接口,一特定的訪問(wèn)權(quán)限來(lái)使用類的成員。通過(guò)封裝
17、使一部分成員充當(dāng)類與外部的接口,而將其他的成員隱蔽起來(lái),這樣就達(dá)到了對(duì)成員訪問(wèn)權(quán)限的合理控制,使不同類之間的相互影響減少到最低限度,進(jìn)而增強(qiáng)數(shù)據(jù)的安全性和簡(jiǎn)化程序的編寫(xiě)工作。3) C+中有哪幾種派生方式?每種方式的派生類對(duì)基類成員的繼承和訪問(wèn)控制屬性是什么樣的?答:C+中的派生方式有public 、private 、protected。基類(父類)得私有成員,派生類(子類)都不能訪問(wèn);基類得公有成員,派生類得繼承方式?jīng)Q定了其函數(shù)得形式;基類得保護(hù)成員在派生類得公有繼承中也是保護(hù)類型。4) 派生類對(duì)象和基類對(duì)象是什么樣的關(guān)系?派生類對(duì)象的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序是怎樣的?答:派生類繼承于基類。當(dāng)用派生類定義一個(gè)對(duì)象時(shí),除了繼承時(shí)附加的函
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教育培訓(xùn)中心租賃合同范本-@-1
- 二零二五年度木門(mén)電商平臺(tái)合作運(yùn)營(yíng)合同
- 2025年全球及中國(guó)人體工學(xué)靠墊行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球水處理用復(fù)合管行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球呼吸道藥物吸入器行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 二零二五年度內(nèi)墻保溫材料研發(fā)與市場(chǎng)推廣合作合同
- 二零二五年度駕駛員安全責(zé)任保險(xiǎn)合同范本
- 合伙房屋買賣合同
- 四川省事業(yè)單位聘用合同
- 瓷磚銷售買賣合同協(xié)議
- 中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司蘭州分公司招聘筆試真題2024
- 第1課 隋朝統(tǒng)一與滅亡 課件(26張)2024-2025學(xué)年部編版七年級(jí)歷史下冊(cè)
- 提高金剛砂地坪施工一次合格率
- 【歷史】唐朝建立與“貞觀之治”課件-2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 產(chǎn)業(yè)園區(qū)招商合作協(xié)議書(shū)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2025新譯林版英語(yǔ)七年級(jí)下單詞默寫(xiě)表
- 盾構(gòu)標(biāo)準(zhǔn)化施工手冊(cè)
- 天然氣脫硫完整版本
- 中歐班列課件
- 2025屆高三數(shù)學(xué)一輪復(fù)習(xí)備考經(jīng)驗(yàn)交流
評(píng)論
0/150
提交評(píng)論