面向?qū)ο蟪绦蛟O(shè)計總復(fù)習(xí)資料2008秋_第1頁
面向?qū)ο蟪绦蛟O(shè)計總復(fù)習(xí)資料2008秋_第2頁
面向?qū)ο蟪绦蛟O(shè)計總復(fù)習(xí)資料2008秋_第3頁
面向?qū)ο蟪绦蛟O(shè)計總復(fù)習(xí)資料2008秋_第4頁
面向?qū)ο蟪绦蛟O(shè)計總復(fù)習(xí)資料2008秋_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟪绦蛟O(shè)計復(fù)習(xí)課(2008_秋)一、對照書本(或上課課件),搞懂有關(guān)概念1. 面向?qū)ο蟪绦蛟O(shè)計的基本概念面向?qū)ο螅∣-O)程序設(shè)計是一種新的程序設(shè)計范型。這種范型的主要特征是: 程序=對象+消息面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點是:第一,程序一般由類的定義和類的使用兩部分組成,在主程序中定義對象并規(guī)定它們之間傳遞消息的規(guī)律;第二,程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的,對象接收到后,啟動有關(guān)方法完成相應(yīng)操作。第三,類由繼承關(guān)系產(chǎn)生相互間的聯(lián)系。2. 對象是現(xiàn)實世界的一個實體,其特性是: (1) 每一個必須有一個名字以區(qū)別于其他對象; (2) 用屬性(或叫狀態(tài))來描述它的某些特征; (3)

2、 有一組操作,每一個操作決定對象的一種行為。 (4) 對象的操作可以分為兩類:一類是自身所承受的操作,一類是施加于其他對象的操作。類是:一組具有共同的屬性特征和行為特征的對象的抽象。類與對象的關(guān)系是抽象和具體的關(guān)系。3. 面向?qū)ο笙到y(tǒng)的特征是:封裝性、繼承性和多態(tài)性(1). 將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個實體,數(shù)據(jù)的表示方式和對數(shù)的操作細(xì)節(jié)被隱藏起來,用戶通過操作接口對數(shù)據(jù)進(jìn)行操作。這就是數(shù)據(jù)的封裝。(2). 繼承機(jī)制允許派生類繼承基類的數(shù)據(jù)和操作(即數(shù)據(jù)成員和成員函數(shù)),也就是說,允許派生類使用基類的數(shù)據(jù)和操作。同時派生類還可以增加新的操作和數(shù)據(jù)。從繼承源上分,繼承分為單繼承和多

3、繼承。(3). 面向?qū)ο笙到y(tǒng)的多態(tài)性是指不同的對象收到相同的消息時產(chǎn)生多種不同的行為方式。重載的概念4. 新的I/O流 cin是標(biāo)準(zhǔn)輸入流,在程序中用于代表標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤。運(yùn)算符“>>”表示向右 cout是標(biāo)準(zhǔn)輸出流,在程序中用于代表標(biāo)準(zhǔn)輸出設(shè)備,即屏幕。運(yùn)算符“<<”表示向左使用cin或cout進(jìn)行I/O操作時,在程序中必須嵌入頭文件iostream.h5. new和delete6. 引用引用可為變量起別名,它主要用作函數(shù)參數(shù)以及函數(shù)的返回類型。有變量的引用、參數(shù)引用和返回值引用。7. 類的定義clsaa 類名 private: (可缺省) 私有數(shù)據(jù)成員和函數(shù)成

4、員 protected: 保護(hù)段數(shù)據(jù)成員和函數(shù)成員 public: 公有數(shù)據(jù)成員和函數(shù)成員 ;成員函數(shù)的定義 第一種方式是在類定義中只給出成員函數(shù)的原形,而成員函數(shù)體在類的外部定義。 第二種方式是將成員函數(shù)定義在類的內(nèi)部,即定義為內(nèi)置函數(shù)。 (1) 隱式定義 (2) 顯式定義8對象中成員的訪問不論是數(shù)據(jù)成員,還是成員函數(shù),只要是公有的,就可以被外部函數(shù)直接訪問,訪問的一般格式是: 對象名. 數(shù)據(jù)成員名 或 對象名. 成員函數(shù)名(實參表) 外 部函數(shù)不能引用對象的私有成員類成員的訪問屬性類的公有成員不但可以被類中成員函數(shù)訪問,還可以在類的外部通過類的對象進(jìn)行訪問。類的私有成員只能被類中成員函數(shù)訪

5、問,不能在類的外部通過類的對象進(jìn)行訪問。9. 構(gòu)造函數(shù)的特點:(1) 構(gòu)造函數(shù)的名字必須與類名相同。(2) 構(gòu)造函數(shù)可以有任意類型的參數(shù),但不能具有返回類型。(3) 定義對象時,編譯系統(tǒng)會自動地調(diào)用構(gòu)造函數(shù)。(4)構(gòu)造函數(shù)也是成員函數(shù),函數(shù)體可寫在類體內(nèi),也可寫在類體外。(5)構(gòu)造函數(shù)被聲明為公有函數(shù),但它不能象其他成員函數(shù)那樣被顯式地調(diào)用,它是在定義對象的同時被調(diào)用的。10. 析構(gòu)函數(shù)也是特殊成員函數(shù),用于釋放對象。(1) 析構(gòu)函數(shù)與構(gòu)造函數(shù)名字相同,但它前面必須加一個波浪號()。(2) 析構(gòu)函數(shù)沒有參數(shù),也沒有返回值,而且不能重載,因此在一個類中只能有一個析構(gòu)函數(shù)。(3) 當(dāng)撤消對象時,編

6、譯系統(tǒng)會自動地調(diào)用析構(gòu)函數(shù)。11. 友元:不屬于任何類的一般函數(shù),另一個類的成員函數(shù),整個的一個類。(1) 友元函數(shù) 不屬于任何類的一般函數(shù)(2) 友元成員 該函數(shù)是另一個類的成員函數(shù),前加上 friend表示該另類的成員函數(shù),又是本類的友元成員。(3). 友元類 在類內(nèi)說明一個類(該類前面已定義),前加上 friend表示該類是本類的友元類。友元類的所有成員函數(shù)可以訪問它自己類私有成員又可本類的私有成員12. 派生類的定義基類:class 類名 類的內(nèi)容;聲明派生類:class 派生類名 : 繼承方式 基類名 /派生類新增的數(shù)據(jù)成員和函數(shù)成員;繼承方式可為公有繼承(用public)、私有繼承

7、(用private或缺省)和保護(hù)繼承(用protected)13. 基類成員在派生類中的訪問屬性(重點)14. 派生類對基類成員的訪問規(guī)則(重點)15. 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)(1) 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行順序當(dāng)創(chuàng)建派生類對象時,首先執(zhí)行基類的構(gòu)造函數(shù),隨后再執(zhí)行派生類的構(gòu)造函數(shù);當(dāng)撤消派生類對象時,則先執(zhí)行派生類的析構(gòu)函數(shù),隨后再執(zhí)行基類的析構(gòu)函數(shù)。(2). 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則一般格式為: 派生類名(參數(shù)總表):基類名(參數(shù)表) /派生類新增成員的初始化語句 其中基類構(gòu)造函數(shù)參數(shù),來源于派生類的構(gòu)造函數(shù)的參數(shù)總表,也可以用常數(shù)值。16. 編譯時的多態(tài)性與運(yùn)行時的

8、多態(tài)性靜態(tài)聯(lián)編(前期聯(lián)編) 靜態(tài)聯(lián)編要求在程序編譯時就知道調(diào)用哪個函數(shù),就決定如何實現(xiàn)某一動作。動態(tài)聯(lián)編(后期聯(lián)編、滯后聯(lián)編) 一直要到程序運(yùn)行時才能確定調(diào)用哪個函數(shù)。系統(tǒng)在運(yùn)行時才動態(tài)完成的聯(lián)編。靜態(tài)聯(lián)編支持的多態(tài)性稱為編譯時多態(tài)性,也稱靜態(tài)多態(tài)性。在C+中,編譯時多態(tài)性是通過函數(shù)重載和運(yùn)算符重載實現(xiàn)的。動態(tài)聯(lián)編支持的多態(tài)性稱為運(yùn)行時多態(tài)性,也稱動態(tài)多態(tài)性。在C+中,運(yùn)行時多態(tài)性是通過繼承和虛函數(shù)來實現(xiàn)的。函數(shù)重載:類外的一般的函數(shù)、成員函數(shù)和構(gòu)造函數(shù)都可以重載17運(yùn)算符重載:除了可以對函數(shù)重載外,還可以對大多數(shù)運(yùn)算符實施重載。外部函數(shù) 類的友元函數(shù) 是類的成員函數(shù) 成員運(yùn)算符函數(shù)定義的語法

9、形式 成員運(yùn)算符函數(shù)的原型在類的內(nèi)部聲明格式為:class X/.返回類型 operator 運(yùn)算符(形參表);/.;18引入派生類后的對象指針引入派生類后,由于派生類是由基類派生出來的,因此指向基類的指針和指向派生類的指針是相關(guān)的。(1)基類的指針可以指向它的公有派生類的對象。但不允許指向它的私有派生類的對象。(2)派生類的指針不允許指向它的基類的對象。(3)基類的指針指向它的公有派生類的對象時,只能用它來直接訪問派生類中從基類繼承來的成員,而不能直接訪問公有派生類中定義的新成員。19. 模板的概念(1).函數(shù)模板與模板函數(shù)所謂函數(shù)模板,就是寫一個函數(shù)模子,用這個模子套印出許多功能相同,參數(shù)

10、類型和返回類型不同的函數(shù)。模板函數(shù):函數(shù)模板實例化后的具體函數(shù)。(2) 類模板和模板類類模板 (也稱為類屬類或類生成類)是:允許用戶為類定義一種模子,使得類中的某些數(shù)據(jù)成員,某些成員函數(shù)的參數(shù)或者返回值,能取任意數(shù)據(jù)類型20. 文件的輸入輸出在含有文件操作的程序中,必須有如下的預(yù)處理命令: # include <fstream.h>復(fù)習(xí)思考題、即考試的A、B、C、D選擇題和填空題一、分清下面的概念,那些是正確的,那些是錯誤的1. 面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點之一程序一般由類的定義和類的使用兩部分組成。程序一般由函數(shù)定義和函數(shù)的使用兩部分組成。程序一般由變量的定義和變量的使用兩部分組成

11、。程序一般由對象的定義和對象的使用兩部分組成。程序中的一切操作都是通過調(diào)用函數(shù)來實現(xiàn)的。程序中的一切操作都是通過定義函數(shù)來實現(xiàn)的。程序中的一切操作都是通過向?qū)ο蟀l(fā)送消息來實現(xiàn)的。程序中的一切操作都是通過定義類來實現(xiàn)的。2對象是現(xiàn)實世界中的一個實體,其特性 每個對象必須有一個名字。 有屬性描述。 有一組操作。必須有一個關(guān)鍵字,以示區(qū)別。定義對象時會自動調(diào)用構(gòu)造函數(shù)。 一定要定義一個構(gòu)造函數(shù)。 一定要有二個以上數(shù)據(jù)。3面向?qū)ο笙到y(tǒng)的特性是封裝性繼承性 多態(tài)性 完整性 唯一性 二義性可重用性 安全性4類和對象之間的關(guān)系是定義和被定義的關(guān)系。調(diào)用和被調(diào)用的關(guān)系。類即是對象數(shù)組。抽象和具體的關(guān)系。類型和

12、變量之間的關(guān)系。型和值的關(guān)系。結(jié)構(gòu)類型和結(jié)構(gòu)體的關(guān)系。指針和所指的對象的關(guān)系。5類的概念是對同一類整型數(shù)據(jù)的集合。對一組具有共同的屬性特征和行為特征的對象的抽象。類即是對象數(shù)組。 各種對象的集合。同一類數(shù)據(jù)的集合。同一記錄的集合。同類函數(shù)的集合。現(xiàn)實世界中所有對象的集合。6構(gòu)造函數(shù)的特征構(gòu)造函數(shù)的函數(shù)名與類名相同。構(gòu)造函數(shù)必須說明返回類型。編譯系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)。構(gòu)造函數(shù)可以重載。構(gòu)造函數(shù)的函數(shù)名與類名不相同。程序中要有調(diào)用構(gòu)造函數(shù)的語句。 7析構(gòu)函數(shù)的特征一個類中只能定義一個析構(gòu)函數(shù)。析構(gòu)函數(shù)名與類名不同。析構(gòu)函數(shù)的定義只能在類體內(nèi)析構(gòu)函數(shù)可以有多個參數(shù)。一個類中能定義多個析構(gòu)函數(shù)。析構(gòu)

13、函數(shù)名與類名相同并加。編譯系統(tǒng)會自動調(diào)用析構(gòu)函數(shù)。析構(gòu)函數(shù)可以有多個參數(shù)8 關(guān)于成員函數(shù)特征的下述描述成員函數(shù)一定是內(nèi)置函數(shù)。成員函數(shù)可以重載。成員函數(shù)可以設(shè)置參數(shù)的缺省值。成員函數(shù)可以是靜態(tài)的。類定義中只給出成員函數(shù)的原型,而成員函數(shù)在類外定義。類定義中只給出成員函數(shù)的原型,而成員函數(shù)在類外定義并在之前加inline。成員函數(shù)一定要在類內(nèi)定義。可在類內(nèi)定義。9下列的各類函數(shù)中,不是類的成員函數(shù)構(gòu)造函數(shù)析構(gòu)函數(shù) 友元函數(shù) 拷貝構(gòu)造函數(shù) 主函數(shù) 一般函數(shù) 標(biāo)準(zhǔn)函數(shù) 缺省參數(shù)的構(gòu)造函數(shù)10友元的作用是什么,一個類的友元可以訪問該類的什么提高程序的運(yùn)行效率。加強(qiáng)類的封裝性。實現(xiàn)數(shù)據(jù)的隱藏性。增加成員

14、函數(shù)的種類私有成員和公有成員 只能是私有成員 只能是公有成員 成員函數(shù)11對基類和派生類的關(guān)系描述中 派生類是基類的具體化。派生類是基類的子集。派生類是基類定義的擴(kuò)延。派生類是基類的組合。 無論哪種派生,基類的私有成員不允許派生類的成員函數(shù)訪問。無論哪種派生,基類的公有成員允許派生類的成員函數(shù)訪問。無論哪種派生,基類的保護(hù)成員允許派生類的成員函數(shù)訪問。無論哪種派生,基類的保護(hù)成員不允許派生類的成員函數(shù)訪問。12派生類的對象對它的基類成員中,可以訪問的是公有繼承的公有成員。公有繼承的私有成員。公有繼承的所有成員。私有繼承的公有成員。私有繼承的私有成員。私有繼承的所有成員。公有繼承的保護(hù)成員。私有

15、繼承的保護(hù)成員。13對定義幾個重載函數(shù)的要求中,錯誤的是。不可重載的函數(shù)的是。要求參數(shù)的個數(shù)不同。要求參數(shù)中至少有一個類型不同。要求函數(shù)名相同。要求函數(shù)的返回值類型一定不同。普通的成員函數(shù)。友元函數(shù)。外部函數(shù)。析構(gòu)函數(shù)14可定義作運(yùn)算符重載函數(shù)的是構(gòu)造函數(shù)。 成員函數(shù)。友元函數(shù)。類以外的函數(shù)。析構(gòu)函數(shù)。無返回值的函數(shù)。15設(shè)置虛基類的目的是,對虛基類的論述,正確的是簡化程序。消除二義性。提高運(yùn)行效率。減少目標(biāo)代碼。定義虛基類時加virtual。 定義派生類時,在基類名前加virtual。在基類的成員函數(shù)前加virtual。在派生類名前加virtual。16不能重載運(yùn)算符&&:

16、new ? : + ( ) delete17關(guān)于動態(tài)聯(lián)編的描述,動態(tài)聯(lián)編稱為運(yùn)行時的多態(tài)性是通過什么來實現(xiàn)的。動態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的。動態(tài)聯(lián)編是在運(yùn)行時確定所調(diào)用的函數(shù)的。動態(tài)聯(lián)編調(diào)用的函數(shù),是用對象的指針或?qū)ο笠盟傅暮瘮?shù)。動態(tài)聯(lián)編是在編譯時確定操作函數(shù)的。函數(shù)重載和運(yùn)算符重載。 繼承和虛函數(shù)。運(yùn)算符重載。 函數(shù)重載。18關(guān)于虛函數(shù)的描述,抽象類論述虛函數(shù)是一個static類型的成員函數(shù)。 虛函數(shù)是一個非成員函數(shù)。 虛函數(shù)是在基類中用virtual 說明,派生類中重新定義的函數(shù)。派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個數(shù)和類型。如果一個類至少有一個純虛函數(shù),那么該類為抽象類。抽象類

17、只能用作其他類的基類,不能建立抽象類對象。抽象類可以用來定義指針。抽象類可以作為某個函數(shù)的返回類型。19. 對虛基類正確的論述定義基類時加virtual。 定義派生類時,在基類名前加virtual。成員函數(shù)前加virtual。在派生類名前加virtual。20進(jìn)行文件操作時需要包含的文件,C+用cout 和 cin 進(jìn)行輸出/輸入操作時需要包含文件。iostream.h fstream.h stdio.h stdlib.h string.h math.h 21在定義類時,第一個保留字。 (class)22將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個實體,數(shù)據(jù)的表示方式和對數(shù)據(jù)的操作細(xì)節(jié)被隱藏起來

18、,這是面向?qū)ο蟪绦蛟O(shè)計的 (封裝性)。而函數(shù)重是 (多態(tài)性)。23C+中類的定義內(nèi)部,英文private段 ,protected 段,public段(私有段 保護(hù)段 公有段 )24. 定義了類A,在主函數(shù)中如出現(xiàn): A *p, obj, ob10; 的語句。(則p是對象指針、obj是對象、ob是對象數(shù)組。)25C+的運(yùn)算符:<< >> new delete (輸入 輸出 申請 釋放)26 在C+定義的類中,成員可分為二類,有三個段。(數(shù)據(jù) 函數(shù) 私有 公有 保護(hù)) 27 在一個類定義中,可以聲明友元,友元可以是三種友元。(友元函數(shù) 友元成員 友元類)28 C+中,函數(shù)說

19、明為void fun(int &i)的引用叫,函數(shù)說明為void &fun(int i)的引用叫。( 參數(shù)引用 返回值引用 )29 繼承機(jī)制允許派生類繼承基類的什么,同時,派生類還可以增加新的什么。( 數(shù)據(jù)和操作 數(shù)據(jù)和操作 )30一個類模板允許用戶為類定義什么?使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)或返回值,能取什么類型?模板是實現(xiàn)代碼重用機(jī)制的一種工具,函數(shù)模板的實例化、類模板的實例化分別稱為 (一個模式(子) 任意數(shù)據(jù)類型 分別稱為模板函數(shù) 、模板類)二、閱讀程序?qū)戇\(yùn)行結(jié)果、程序填空題(對照習(xí)題)1. 引用和函數(shù)調(diào)用2. 派生和繼承的應(yīng)用 3. 派生類的構(gòu)造函數(shù)和析構(gòu)

20、函數(shù)執(zhí)行順序4運(yùn)算符重載復(fù)習(xí)思考題1#include <iostream.h>void main( ) int &index(int i, int b ); int a=1,3,5,7,9,j; cout<<a2<<” ”; j=index(2,a)=25; cout<<j <<” ”<<a2<<endl; int &index(int i, int b ) return bi;答案: 5 25 252#include <iostream.h>void fun1(int m, int

21、 n) m=11; n=24; void fun2(int &m, int &n) m=10; n=20; void main( ) int a=15,b=30; cout<<"a="<<a<<" b="<<b<<endl; fun1(a,b); cout<<"a="<<a<<" b="<<b<<endl; fun2(a,b); cout<<"a="

22、<<a<<" b="<<b<<endl; fun2(a,b); cout<<"a="<<a<<" b="<<b<<endl;答案: a=15 b=30 a=15 b=30 a=10 b=20 a=10 b=203 #include <iostream.h>class point int x, y;public:point( int x1=0, int y1=0) x=x1; y=y1; void print();vo

23、id point:print() cout<<"x="<<x<<" y="<<y<<endl;void print(point p) p.print();void main() point p1(10,20),p2(30),p3,*p;p=&p1; p->print(); p2.print(); print(p3);答案: x=10 y=20 x=30 y=0 x=0 y=04#include <iostream.h>class point int x, y, d;pu

24、blic:point( int x1=0, int y1=0) x=x1; y=y1; d=x*x+y*y;void print() cout<<"x="<<x<<" y="<<y<<” dist=”<<d<<endl; ;void main() point p1(1),p2(2,3),*p;p=&p1; p->print(); p2.print(); 答案: x=1 y=0 dist=1 x=2 y=3 dist=135 #include <iost

25、ream.h>#include <string>class strcl char *str; public: strcl()cout<<"現(xiàn)在進(jìn)入了strcl類的缺省構(gòu)造函數(shù)"<<endl; strcl(char *st) cout<<"現(xiàn)在進(jìn)入了strcl類的構(gòu)造函數(shù)"<<endl; str=new charstrlen(st)+1; strcpy(str,st);void show1() cout<<"name:"<<str; ;class

26、girl strcl name; int age; public: girl():name() cout<<"現(xiàn)在進(jìn)入了girl類的缺省構(gòu)造函數(shù)"<<endl; girl(char *st, int n ):name(st) cout<<"現(xiàn)在進(jìn)入了girl類的構(gòu)造函數(shù)"<<endl; age=n; int show2() name.show1(); cout<<" age:" return age; ;void main() girl g1; girl g2("z

27、hang_fun", 20);答案:現(xiàn)在進(jìn)入了strcl類的缺省構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了girl類的缺省構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了strcl類的構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了girl類的構(gòu)造函數(shù)6. #include <iostream.h>class Time char a9; int hours;int minutes;int seconds; public:Time(int s=0, int m=0, int h=0) hours=h; minutes=m; seconds=s;void show() cout<<"時間: "<<hours&

28、lt;<":"<<minutes<<":"<<seconds<<endl;friend Time operator +(Time t1, Time t2);Time operator +(Time t1, Time t2) Time temp;temp.hours=t1.hours+t2.hours;temp.minutes=t1.minutes+t2.minutes;temp.seconds=t1.seconds+t2.seconds;if(temp.seconds>60) temp.seco

29、nds=temp.seconds-60; temp.minutes+; if(temp.minutes>60) temp.minutes=temp.minutes-60; temp.hours+; if(temp.hours>=24) temp.hours=temp.hours-24;return temp;void main() Time T, T1(20,23,21), T2(10,25,15), T3(5,10,15); T=T1+T2;T.show();T=T+T3;T.show();答案: 時間: 12:48:30 時間: 3:58:357.下面的程序定義一個類samp,

30、有三類數(shù)據(jù)成員和一個構(gòu)造函數(shù)和一個函數(shù)成員,填充程序缺少部分,使其變成完整的C+程序。#include <iostream.h>class samp int a; protected: int b; public: int c; (1) (int n, int m ) /構(gòu)造函數(shù) a=n; (2) ; c=a+b; int (int i) if (i=1) return a; else if(i=2) return b; else return 0;void main ( ) samp obj(20,30); cout << (4) << endl; /輸出

31、a cout << obj.getab(2) << endl; /輸出b cout << (5) << endl; /輸出c答案: . samp . b=m; . getab . obj.getab(1) . obj.c 8.下面的程序包含了日期(Date)類的聲明,要求設(shè)計一個Brithtime類,它繼承了Date類,并且還有一項出生孩子的名字Childname,主程序顯示了一個小孩的名字和出生日期。請補(bǔ)足Brithtime類的public部分。#include <iostream.h>#include <string.h&g

32、t;class Date protected: int month,day,year; public: Date(int m, int d, int y) month=m; day=d; year=y; void display() cout<<month<<"/"<<day<<"/"<<year<<endl; ;class Brithtime: public Date protected: char *Childname; public: / 補(bǔ)充Brithtime類的public

33、部分;void main( ) Brithtime ob("張三",10,1,2004); ob.display();答案: . Brithtime(char *p ,int m, int d, int y):Date(m,d,y) Childname=new charstrlen(p)+1; strcpy(Childname,p); void display() cout<<"姓名:"<<Childname<<"n" cout<<"出生日期:" Date:displ

34、ay(); 三、程序設(shè)計題 1C語言復(fù)習(xí)及C+基礎(chǔ)知識2定義類、成員函數(shù)及構(gòu)造函數(shù)的習(xí)題 思考題、來自VC+6.0面向?qū)ο蟪绦蛟O(shè)計實驗提綱1. 下面是一個C程序,改寫它,使它采用C+風(fēng)格的I/O語句。#include <stdio.h> #include <iostream.h>void main() int a,b,d,min; printf("輸入兩個整數(shù):"); cout<<"輸入兩個整數(shù):" scanf(”%d%d”,&a,&b); cin>>a; cin>>b; min

35、=a>b?b:a; for(d=2;d<=min;d+) if(a%d=0)&&(b%d=0)break; if(d > min) printf("沒有公約數(shù)!n"); cout<<"沒有公約數(shù)!n" else printf("最小公約數(shù)是:%dn",d); cout<<"最小公約數(shù)是:"<<d<<endl;2. 從鍵盤輸入二個任意大小的數(shù),在屏幕上從小到大輸出這二個數(shù)。#include <iostream.h>void

36、main() int a, b, c; cin>>a; cin>>b; if(a>b) c=a; a=b; b=c; cout<<a<<” ”<<b<<endl;3. 定義一個基類圓circle,私有段有圓的半徑,公有段有構(gòu)造函數(shù),能顯示圓面積等。定義派生類ex_square為圓的外切正方形,有構(gòu)造函數(shù),能顯示正方形面積。在主函數(shù)中定義外切正方形對象,其圓半徑為10,顯示兩者面積。答案:#include <iostream.h>class circle float r; /聲明一個圓類public: ci

37、rcle (float x=0) r=x; /構(gòu)造函數(shù) void area1 ( ) /函數(shù)area ( ) 顯示圓面積 cout<< "圓面積是:"<< 3.14*r*r<<endl; float getr() return r; ;class ex_square : public circle /派生一個圓外切正方形類 public: ex_square (float x) : circle (x) /構(gòu)造函數(shù) void area2 ( ) /函數(shù)area ( ) 顯示正方形面積 cout << "外切正方形面積

38、是:"<<4*getr()*getr()<<endl; ;void main( ) ex_square ob(10); ob.area1(); ob.area2(); 4. 定義一個基類長方形base,私有段有長a和寬b,公有段有構(gòu)造函數(shù),能顯示長方形面積等。定義以該長方形為底面積的派生類長方體cuboid,有高h(yuǎn),有構(gòu)造函數(shù),能顯示長方體體積。在主函數(shù)中定義長方體對象,其長、寬、高分別為10,20,5,顯示出長方體體積和長方形底面積。答案:#include <iostream.h>class base float a,b; /聲明長方形publi

39、c: base (float a1=0, float b1=0) a=a1; b=b1; void area ( ) /函數(shù)area ( ) 顯示長方形面積 cout<< "長方形面積是:"<< a*b <<endl; float getr() return a*b; ;class cuboid : public base /以該長方形為底的派生類長方體 float h; public: cuboid (float a1, float b1, float h1 ) : base (a1,b1) h=h1; void body ( ) /函數(shù)body ( ) 顯示長方體體積 cout << "長方體體積是:"<<h*getr()<<endl; ;void main( ) cuboid ob(10,20,5); ob.area(); ob.body();5. 定義一個基類建筑物building,私有段有樓房層數(shù)fr,房間數(shù)r,樓房總面積m,有構(gòu)造函數(shù)。定義派生類住宅樓house,有臥室數(shù)量 br,浴室數(shù)量 dr,有構(gòu)造函數(shù),能顯示住宅樓所有數(shù)據(jù)。定義派生辦公大樓offic,滅火器數(shù)量mr

溫馨提示

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

評論

0/150

提交評論