




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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)成績:批閱教師簽字:一、實(shí)驗(yàn)?zāi)康谋敬螌?shí)驗(yàn)所涉及并要求掌握的知識(shí)點(diǎn)。1)學(xué)習(xí)類與對(duì)象的定義、聲明及使用方法。2)學(xué)習(xí)具有不同屬性的數(shù)據(jù)成員與成員函數(shù)的訪問方式。3)理解構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義與執(zhí)行過程。4)學(xué)習(xí)定義和使用類的繼承關(guān)系,定義派生類。二、實(shí)驗(yàn)環(huán)境寫出程序編寫時(shí)所使用的編譯器、操作系統(tǒng)等。編譯器:Visual C+ 6.0.操作系統(tǒng):Windows XP.三、實(shí)驗(yàn)內(nèi)容與實(shí)驗(yàn)過程及分析列出實(shí)驗(yàn)需要做的各個(gè)題目,并針對(duì)每個(gè)題目:1.
2、寫出關(guān)鍵代碼(要求選出該題目最核心的代碼并加注釋);2. 描述調(diào)試的過程、調(diào)試過程中所出現(xiàn)的現(xiàn)象及解決方法,給出題目最終運(yùn)行結(jié)果;3. 對(duì)該題目進(jìn)行簡短總結(jié),寫出該題目所涉及的知識(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è)基本的類。在編寫該類時(shí),要注意對(duì)靜態(tài)成員nCount的操作,使其能夠正確表示程序中點(diǎn)的個(gè)數(shù)。編完該類后,要在main()函數(shù)中進(jìn)行測試,分別定義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)試過程中所出現(xiàn)的現(xiàn)象及解決方法:在調(diào)試時(shí),程序不能運(yùn)行沒有運(yùn)行成功,經(jīng)過查閱資料后得知對(duì)靜態(tài)成員的調(diào)用必須用類名加雙冒號(hào)進(jìn)行調(diào)用,把代碼改成CPoint:nCount后,程序成功運(yùn)行。在構(gòu)造函數(shù)的聲明和定義中,都進(jìn)行了變量的賦值,結(jié)果造成編譯不通過,在去掉聲明中的賦值后,才編譯通過。程序運(yùn)
6、行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過本題學(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ù)的編寫。4, 具有不同屬性的數(shù)據(jù)成員與成員函數(shù)的訪問方式。5, 構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義與執(zhí)行過程。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ì)算該線段長度的成員函數(shù)void ShowLine();請(qǐng)完成該類中各成員函數(shù)的定義。并利用VC調(diào)試工具觀察含有組合關(guān)系類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行情況。1, 本題目的核心代碼:public:CLine(); /無參構(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ì)算該線段長度的
8、成員函數(shù)void ShowLine();double CLine:Distance() /計(jì)算線段的長度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() /在屏幕輸出線段長度cout<<"線段的長度為:"<<CLine:Distance()<<endl;2,調(diào)試過程中所出現(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ù)變量名來編寫參數(shù)列表。程序運(yùn)行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過這個(gè)實(shí)驗(yàn),了解到了如何運(yùn)用初始化列表進(jìn)行構(gòu)造函數(shù),它可以顯示的調(diào)用基類成員,本題目涉及到的主要知識(shí)點(diǎn)是用初始化列表進(jìn)行構(gòu)造函數(shù),組合類的聲明和定義以及組合類構(gòu)造函數(shù)的初始化過程。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ù)中做測試。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)試過程中所出現(xiàn)的現(xiàn)象及解決方法:在調(diào)試過程中,程序首先執(zhí)行基類的構(gòu)造函數(shù),然后在執(zhí)行自己的構(gòu)造函數(shù)。程序運(yùn)行結(jié)果:3,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):通過這個(gè)實(shí)驗(yàn),了解到了:1, 程序首先執(zhí)行基類的構(gòu)造函數(shù),然后執(zhí)行自己的構(gòu)造函數(shù),以及在繼承關(guān)系中如何編寫構(gòu)造函數(shù)。2, 派生類對(duì)象不能直接訪問基類繼承過來的私有成員。3, 基類將函數(shù)聲明為虛函數(shù)即可,派生類和函數(shù)的定義處可以沒有關(guān)鍵字virtual.本題目涉及的知識(shí)點(diǎn)有:定義和使用類的繼承關(guān)系,定義派生類、派生類中構(gòu)造函數(shù)的編寫方法,和繼承關(guān)系中構(gòu)造函數(shù)的
13、執(zhí)行順序。4)定義一個(gè)基類Animal,有私有整型成員變量age,構(gòu)造其派生類dog,在其成員函數(shù)SetAge(int n)中直接給age賦值,看看會(huì)有什么問題,把a(bǔ)ge改為公有成員變量,還會(huì)有問題嗎?把a(bǔ)ge改為保護(hù)成員變量呢?編程試試看。1, 本題目的核心代碼: class Animalpublic:int age;class dog: public Animalpublic:int SetAge(int n)age = 3;2,題目總結(jié)及題目所涉及的知識(shí)點(diǎn):編寫基類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ù)成員變量步驟相同。說明了派生類不能調(diào)用基類的私有成員變量的變量,而可以調(diào)用基類的公有成員和保護(hù)成員。設(shè)計(jì)的知識(shí)點(diǎn)有:派生類不能訪問基類的私有成員,可以訪問基類的保護(hù)和公有成員。五、實(shí)驗(yàn)總結(jié)對(duì)自己的實(shí)驗(yàn)的自我剖析,總結(jié)實(shí)驗(yàn)的心得體會(huì),并提出實(shí)驗(yàn)的改進(jìn)意見等。在這次試驗(yàn)中,感覺自己的程序最難編寫的地方就是類的構(gòu)造函數(shù),在經(jīng)過仔細(xì)的查閱資料和詢問同學(xué)后,終于熟練了構(gòu)造函數(shù)的編寫
15、,從這次試驗(yàn)中我學(xué)到了很多C+的核心知識(shí),利如函數(shù)的構(gòu)造和析構(gòu)函數(shù),構(gòu)造函數(shù)初始化列表,拷貝,派生類和基類的構(gòu)造函數(shù)執(zhí)行的先后順序等。使我們在鞏固基礎(chǔ)的前提下游更大的提高。對(duì)于本實(shí)驗(yàn),雖然試驗(yàn)內(nèi)容很少,但涵蓋的知識(shí)點(diǎn)頗多,能讓同學(xué)輕松的學(xué)到很多知識(shí),但我感覺在給程序多加一些功能和達(dá)到更好的效果。能讓我們在學(xué)到知識(shí)的同時(shí),鍛煉編寫出色代碼的能力。六、思考題回答實(shí)驗(yàn)要求的思考題,要將原題也寫出來。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ù)而沒有公共構(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ù)來初始化類。帶參數(shù)的構(gòu)造函數(shù)作用是為了來初始化某些值而設(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)安全性和簡化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過 外部接口,一特定的訪問權(quán)限來使用類的成員。通過封裝
17、使一部分成員充當(dāng)類與外部的接口,而將其他的成員隱蔽起來,這樣就達(dá)到了對(duì)成員訪問權(quán)限的合理控制,使不同類之間的相互影響減少到最低限度,進(jìn)而增強(qiáng)數(shù)據(jù)的安全性和簡化程序的編寫工作。3) C+中有哪幾種派生方式?每種方式的派生類對(duì)基類成員的繼承和訪問控制屬性是什么樣的?答:C+中的派生方式有public 、private 、protected?;?父類)得私有成員,派生類(子類)都不能訪問;基類得公有成員,派生類得繼承方式?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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 登高作業(yè)安全知識(shí)課件
- 《深入淺出等值線:重點(diǎn)難點(diǎn)解析》課件
- 解讀谷雨天氣
- 教育之航模板
- 商場配套合同范本
- 合股種植木耳合同范本
- 商業(yè)店鋪合同范例
- 健康大賽復(fù)習(xí)測試卷含答案
- 入校陪讀申請(qǐng)書模板范文
- 合伙轉(zhuǎn)讓合同范本
- 新國際政治學(xué)概論(第三版)-教學(xué)課件-陳岳-109503國際政治學(xué)概論(第三版)
- 科技創(chuàng)新大賽教師培訓(xùn)課件
- 幼兒跳繩的培訓(xùn)課件
- 銷貨清單-模板
- 《金融反欺詐與大數(shù)據(jù)風(fēng)控研究報(bào)告(2023)》
- GB/T 15558.1-2023燃?xì)庥寐竦鼐垡蚁?PE)管道系統(tǒng)第1部分:總則
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊
- 實(shí)驗(yàn)室安全檢查表
- 初中政治答題卡模板A4
- 供應(yīng)商滿意度調(diào)查表
- 無圍標(biāo)、串標(biāo)行為承諾書
評(píng)論
0/150
提交評(píng)論