




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上面向?qū)ο蟪绦蛟O(shè)計(jì)復(fù)習(xí)課(2008_秋)一、對(duì)照書(shū)本(或上課課件),搞懂有關(guān)概念1. 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念面向?qū)ο螅∣-O)程序設(shè)計(jì)是一種新的程序設(shè)計(jì)范型。這種范型的主要特征是: 程序=對(duì)象+消息面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類(lèi)的定義和類(lèi)的使用兩部分組成,在主程序中定義對(duì)象并規(guī)定它們之間傳遞消息的規(guī)律;第二,程序中的一切操作都是通過(guò)向?qū)ο蟀l(fā)送消息來(lái)實(shí)現(xiàn)的,對(duì)象接收到后,啟動(dòng)有關(guān)方法完成相應(yīng)操作。第三,類(lèi)由繼承關(guān)系產(chǎn)生相互間的聯(lián)系。2. 對(duì)象是現(xiàn)實(shí)世界的一個(gè)實(shí)體,其特性是: (1) 每一個(gè)必須有一個(gè)名字以區(qū)別于其他對(duì)象; (2) 用屬性(或叫狀態(tài))來(lái)
2、描述它的某些特征; (3) 有一組操作,每一個(gè)操作決定對(duì)象的一種行為。 (4) 對(duì)象的操作可以分為兩類(lèi):一類(lèi)是自身所承受的操作,一類(lèi)是施加于其他對(duì)象的操作。類(lèi)是:一組具有共同的屬性特征和行為特征的對(duì)象的抽象。類(lèi)與對(duì)象的關(guān)系是抽象和具體的關(guān)系。3. 面向?qū)ο笙到y(tǒng)的特征是:封裝性、繼承性和多態(tài)性(1). 將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個(gè)實(shí)體,數(shù)據(jù)的表示方式和對(duì)數(shù)的操作細(xì)節(jié)被隱藏起來(lái),用戶(hù)通過(guò)操作接口對(duì)數(shù)據(jù)進(jìn)行操作。這就是數(shù)據(jù)的封裝。(2). 繼承機(jī)制允許派生類(lèi)繼承基類(lèi)的數(shù)據(jù)和操作(即數(shù)據(jù)成員和成員函數(shù)),也就是說(shuō),允許派生類(lèi)使用基類(lèi)的數(shù)據(jù)和操作。同時(shí)派生類(lèi)還可以增加新的操作和數(shù)據(jù)。從繼承
3、源上分,繼承分為單繼承和多繼承。(3). 面向?qū)ο笙到y(tǒng)的多態(tài)性是指不同的對(duì)象收到相同的消息時(shí)產(chǎn)生多種不同的行為方式。重載的概念4. 新的I/O流 cin是標(biāo)準(zhǔn)輸入流,在程序中用于代表標(biāo)準(zhǔn)輸入設(shè)備,即鍵盤(pán)。運(yùn)算符“>>”表示向右 cout是標(biāo)準(zhǔn)輸出流,在程序中用于代表標(biāo)準(zhǔn)輸出設(shè)備,即屏幕。運(yùn)算符“<<”表示向左使用cin或cout進(jìn)行I/O操作時(shí),在程序中必須嵌入頭文件iostream.h5. new和delete6. 引用引用可為變量起別名,它主要用作函數(shù)參數(shù)以及函數(shù)的返回類(lèi)型。有變量的引用、參數(shù)引用和返回值引用。7. 類(lèi)的定義clsaa 類(lèi)名 private: (可缺
4、省) 私有數(shù)據(jù)成員和函數(shù)成員 protected: 保護(hù)段數(shù)據(jù)成員和函數(shù)成員 public: 公有數(shù)據(jù)成員和函數(shù)成員 ;成員函數(shù)的定義 第一種方式是在類(lèi)定義中只給出成員函數(shù)的原形,而成員函數(shù)體在類(lèi)的外部定義。 第二種方式是將成員函數(shù)定義在類(lèi)的內(nèi)部,即定義為內(nèi)置函數(shù)。 (1) 隱式定義 (2) 顯式定義8對(duì)象中成員的訪(fǎng)問(wèn)不論是數(shù)據(jù)成員,還是成員函數(shù),只要是公有的,就可以被外部函數(shù)直接訪(fǎng)問(wèn),訪(fǎng)問(wèn)的一般格式是: 對(duì)象名. 數(shù)據(jù)成員名 或 對(duì)象名. 成員函數(shù)名(實(shí)參表) 外 部函數(shù)不能引用對(duì)象的私有成員類(lèi)成員的訪(fǎng)問(wèn)屬性類(lèi)的公有成員不但可以被類(lèi)中成員函數(shù)訪(fǎng)問(wèn),還可以在類(lèi)的外部通過(guò)類(lèi)的對(duì)象進(jìn)行訪(fǎng)問(wèn)。類(lèi)的私
5、有成員只能被類(lèi)中成員函數(shù)訪(fǎng)問(wèn),不能在類(lèi)的外部通過(guò)類(lèi)的對(duì)象進(jìn)行訪(fǎng)問(wèn)。9. 構(gòu)造函數(shù)的特點(diǎn):(1) 構(gòu)造函數(shù)的名字必須與類(lèi)名相同。(2) 構(gòu)造函數(shù)可以有任意類(lèi)型的參數(shù),但不能具有返回類(lèi)型。(3) 定義對(duì)象時(shí),編譯系統(tǒng)會(huì)自動(dòng)地調(diào)用構(gòu)造函數(shù)。(4)構(gòu)造函數(shù)也是成員函數(shù),函數(shù)體可寫(xiě)在類(lèi)體內(nèi),也可寫(xiě)在類(lèi)體外。(5)構(gòu)造函數(shù)被聲明為公有函數(shù),但它不能象其他成員函數(shù)那樣被顯式地調(diào)用,它是在定義對(duì)象的同時(shí)被調(diào)用的。10. 析構(gòu)函數(shù)也是特殊成員函數(shù),用于釋放對(duì)象。(1) 析構(gòu)函數(shù)與構(gòu)造函數(shù)名字相同,但它前面必須加一個(gè)波浪號(hào)()。(2) 析構(gòu)函數(shù)沒(méi)有參數(shù),也沒(méi)有返回值,而且不能重載,因此在一個(gè)類(lèi)中只能有一個(gè)析構(gòu)函數(shù)
6、。(3) 當(dāng)撤消對(duì)象時(shí),編譯系統(tǒng)會(huì)自動(dòng)地調(diào)用析構(gòu)函數(shù)。11. 友元:不屬于任何類(lèi)的一般函數(shù),另一個(gè)類(lèi)的成員函數(shù),整個(gè)的一個(gè)類(lèi)。(1) 友元函數(shù) 不屬于任何類(lèi)的一般函數(shù)(2) 友元成員 該函數(shù)是另一個(gè)類(lèi)的成員函數(shù),前加上 friend表示該另類(lèi)的成員函數(shù),又是本類(lèi)的友元成員。(3). 友元類(lèi) 在類(lèi)內(nèi)說(shuō)明一個(gè)類(lèi)(該類(lèi)前面已定義),前加上 friend表示該類(lèi)是本類(lèi)的友元類(lèi)。友元類(lèi)的所有成員函數(shù)可以訪(fǎng)問(wèn)它自己類(lèi)私有成員又可本類(lèi)的私有成員12. 派生類(lèi)的定義基類(lèi):class 類(lèi)名 類(lèi)的內(nèi)容;聲明派生類(lèi):class 派生類(lèi)名 : 繼承方式 基類(lèi)名 /派生類(lèi)新增的數(shù)據(jù)成員和函數(shù)成員;繼承方式可為公有繼承(
7、用public)、私有繼承(用private或缺省)和保護(hù)繼承(用protected)13. 基類(lèi)成員在派生類(lèi)中的訪(fǎng)問(wèn)屬性(重點(diǎn))14. 派生類(lèi)對(duì)基類(lèi)成員的訪(fǎng)問(wèn)規(guī)則(重點(diǎn))15. 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)(1) 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)執(zhí)行順序當(dāng)創(chuàng)建派生類(lèi)對(duì)象時(shí),首先執(zhí)行基類(lèi)的構(gòu)造函數(shù),隨后再執(zhí)行派生類(lèi)的構(gòu)造函數(shù);當(dāng)撤消派生類(lèi)對(duì)象時(shí),則先執(zhí)行派生類(lèi)的析構(gòu)函數(shù),隨后再執(zhí)行基類(lèi)的析構(gòu)函數(shù)。(2). 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的構(gòu)造規(guī)則一般格式為: 派生類(lèi)名(參數(shù)總表):基類(lèi)名(參數(shù)表) /派生類(lèi)新增成員的初始化語(yǔ)句 其中基類(lèi)構(gòu)造函數(shù)參數(shù),來(lái)源于派生類(lèi)的構(gòu)造函數(shù)的參數(shù)總表,也可以用常數(shù)值。16.
8、 編譯時(shí)的多態(tài)性與運(yùn)行時(shí)的多態(tài)性靜態(tài)聯(lián)編(前期聯(lián)編) 靜態(tài)聯(lián)編要求在程序編譯時(shí)就知道調(diào)用哪個(gè)函數(shù),就決定如何實(shí)現(xiàn)某一動(dòng)作。動(dòng)態(tài)聯(lián)編(后期聯(lián)編、滯后聯(lián)編) 一直要到程序運(yùn)行時(shí)才能確定調(diào)用哪個(gè)函數(shù)。系統(tǒng)在運(yùn)行時(shí)才動(dòng)態(tài)完成的聯(lián)編。靜態(tài)聯(lián)編支持的多態(tài)性稱(chēng)為編譯時(shí)多態(tài)性,也稱(chēng)靜態(tài)多態(tài)性。在C+中,編譯時(shí)多態(tài)性是通過(guò)函數(shù)重載和運(yùn)算符重載實(shí)現(xiàn)的。動(dòng)態(tài)聯(lián)編支持的多態(tài)性稱(chēng)為運(yùn)行時(shí)多態(tài)性,也稱(chēng)動(dòng)態(tài)多態(tài)性。在C+中,運(yùn)行時(shí)多態(tài)性是通過(guò)繼承和虛函數(shù)來(lái)實(shí)現(xiàn)的。函數(shù)重載:類(lèi)外的一般的函數(shù)、成員函數(shù)和構(gòu)造函數(shù)都可以重載17運(yùn)算符重載:除了可以對(duì)函數(shù)重載外,還可以對(duì)大多數(shù)運(yùn)算符實(shí)施重載。外部函數(shù) 類(lèi)的友元函數(shù) 是類(lèi)的成員函數(shù)
9、 成員運(yùn)算符函數(shù)定義的語(yǔ)法形式 成員運(yùn)算符函數(shù)的原型在類(lèi)的內(nèi)部聲明格式為:class X/.返回類(lèi)型 operator 運(yùn)算符(形參表);/.;18引入派生類(lèi)后的對(duì)象指針引入派生類(lèi)后,由于派生類(lèi)是由基類(lèi)派生出來(lái)的,因此指向基類(lèi)的指針和指向派生類(lèi)的指針是相關(guān)的。(1)基類(lèi)的指針可以指向它的公有派生類(lèi)的對(duì)象。但不允許指向它的私有派生類(lèi)的對(duì)象。(2)派生類(lèi)的指針不允許指向它的基類(lèi)的對(duì)象。(3)基類(lèi)的指針指向它的公有派生類(lèi)的對(duì)象時(shí),只能用它來(lái)直接訪(fǎng)問(wèn)派生類(lèi)中從基類(lèi)繼承來(lái)的成員,而不能直接訪(fǎng)問(wèn)公有派生類(lèi)中定義的新成員。19. 模板的概念(1).函數(shù)模板與模板函數(shù)所謂函數(shù)模板,就是寫(xiě)一個(gè)函數(shù)模子,用這個(gè)模
10、子套印出許多功能相同,參數(shù)類(lèi)型和返回類(lèi)型不同的函數(shù)。模板函數(shù):函數(shù)模板實(shí)例化后的具體函數(shù)。(2) 類(lèi)模板和模板類(lèi)類(lèi)模板 (也稱(chēng)為類(lèi)屬類(lèi)或類(lèi)生成類(lèi))是:允許用戶(hù)為類(lèi)定義一種模子,使得類(lèi)中的某些數(shù)據(jù)成員,某些成員函數(shù)的參數(shù)或者返回值,能取任意數(shù)據(jù)類(lèi)型20. 文件的輸入輸出在含有文件操作的程序中,必須有如下的預(yù)處理命令: # include <fstream.h>復(fù)習(xí)思考題、即考試的A、B、C、D選擇題和填空題一、分清下面的概念,那些是正確的,那些是錯(cuò)誤的1. 面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點(diǎn)之一程序一般由類(lèi)的定義和類(lèi)的使用兩部分組成。程序一般由函數(shù)定義和函數(shù)的使用兩部分組成。程序一般由變量的
11、定義和變量的使用兩部分組成。程序一般由對(duì)象的定義和對(duì)象的使用兩部分組成。程序中的一切操作都是通過(guò)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)的。程序中的一切操作都是通過(guò)定義函數(shù)來(lái)實(shí)現(xiàn)的。程序中的一切操作都是通過(guò)向?qū)ο蟀l(fā)送消息來(lái)實(shí)現(xiàn)的。程序中的一切操作都是通過(guò)定義類(lèi)來(lái)實(shí)現(xiàn)的。2對(duì)象是現(xiàn)實(shí)世界中的一個(gè)實(shí)體,其特性 每個(gè)對(duì)象必須有一個(gè)名字。 有屬性描述。 有一組操作。必須有一個(gè)關(guān)鍵字,以示區(qū)別。定義對(duì)象時(shí)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。 一定要定義一個(gè)構(gòu)造函數(shù)。 一定要有二個(gè)以上數(shù)據(jù)。3面向?qū)ο笙到y(tǒng)的特性是封裝性繼承性 多態(tài)性 完整性 唯一性 二義性可重用性 安全性4類(lèi)和對(duì)象之間的關(guān)系是定義和被定義的關(guān)系。調(diào)用和被調(diào)用的關(guān)系。類(lèi)即是對(duì)象數(shù)組
12、。抽象和具體的關(guān)系。類(lèi)型和變量之間的關(guān)系。型和值的關(guān)系。結(jié)構(gòu)類(lèi)型和結(jié)構(gòu)體的關(guān)系。指針和所指的對(duì)象的關(guān)系。5類(lèi)的概念是對(duì)同一類(lèi)整型數(shù)據(jù)的集合。對(duì)一組具有共同的屬性特征和行為特征的對(duì)象的抽象。類(lèi)即是對(duì)象數(shù)組。 各種對(duì)象的集合。同一類(lèi)數(shù)據(jù)的集合。同一記錄的集合。同類(lèi)函數(shù)的集合。現(xiàn)實(shí)世界中所有對(duì)象的集合。6構(gòu)造函數(shù)的特征構(gòu)造函數(shù)的函數(shù)名與類(lèi)名相同。構(gòu)造函數(shù)必須說(shuō)明返回類(lèi)型。編譯系統(tǒng)會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù)。構(gòu)造函數(shù)可以重載。構(gòu)造函數(shù)的函數(shù)名與類(lèi)名不相同。程序中要有調(diào)用構(gòu)造函數(shù)的語(yǔ)句。 7析構(gòu)函數(shù)的特征一個(gè)類(lèi)中只能定義一個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)名與類(lèi)名不同。析構(gòu)函數(shù)的定義只能在類(lèi)體內(nèi)析構(gòu)函數(shù)可以有多個(gè)參數(shù)。一個(gè)類(lèi)
13、中能定義多個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)名與類(lèi)名相同并加。編譯系統(tǒng)會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù)。析構(gòu)函數(shù)可以有多個(gè)參數(shù)8 關(guān)于成員函數(shù)特征的下述描述成員函數(shù)一定是內(nèi)置函數(shù)。成員函數(shù)可以重載。成員函數(shù)可以設(shè)置參數(shù)的缺省值。成員函數(shù)可以是靜態(tài)的。類(lèi)定義中只給出成員函數(shù)的原型,而成員函數(shù)在類(lèi)外定義。類(lèi)定義中只給出成員函數(shù)的原型,而成員函數(shù)在類(lèi)外定義并在之前加inline。成員函數(shù)一定要在類(lèi)內(nèi)定義。可在類(lèi)內(nèi)定義。9下列的各類(lèi)函數(shù)中,不是類(lèi)的成員函數(shù)構(gòu)造函數(shù)析構(gòu)函數(shù) 友元函數(shù) 拷貝構(gòu)造函數(shù) 主函數(shù) 一般函數(shù) 標(biāo)準(zhǔn)函數(shù) 缺省參數(shù)的構(gòu)造函數(shù)10友元的作用是什么,一個(gè)類(lèi)的友元可以訪(fǎng)問(wèn)該類(lèi)的什么提高程序的運(yùn)行效率。加強(qiáng)類(lèi)的封裝性。
14、實(shí)現(xiàn)數(shù)據(jù)的隱藏性。增加成員函數(shù)的種類(lèi)私有成員和公有成員 只能是私有成員 只能是公有成員 成員函數(shù)11對(duì)基類(lèi)和派生類(lèi)的關(guān)系描述中 派生類(lèi)是基類(lèi)的具體化。派生類(lèi)是基類(lèi)的子集。派生類(lèi)是基類(lèi)定義的擴(kuò)延。派生類(lèi)是基類(lèi)的組合。 無(wú)論哪種派生,基類(lèi)的私有成員不允許派生類(lèi)的成員函數(shù)訪(fǎng)問(wèn)。無(wú)論哪種派生,基類(lèi)的公有成員允許派生類(lèi)的成員函數(shù)訪(fǎng)問(wèn)。無(wú)論哪種派生,基類(lèi)的保護(hù)成員允許派生類(lèi)的成員函數(shù)訪(fǎng)問(wèn)。無(wú)論哪種派生,基類(lèi)的保護(hù)成員不允許派生類(lèi)的成員函數(shù)訪(fǎng)問(wèn)。12派生類(lèi)的對(duì)象對(duì)它的基類(lèi)成員中,可以訪(fǎng)問(wèn)的是公有繼承的公有成員。公有繼承的私有成員。公有繼承的所有成員。私有繼承的公有成員。私有繼承的私有成員。私有繼承的所有成員
15、。公有繼承的保護(hù)成員。私有繼承的保護(hù)成員。13對(duì)定義幾個(gè)重載函數(shù)的要求中,錯(cuò)誤的是。不可重載的函數(shù)的是。要求參數(shù)的個(gè)數(shù)不同。要求參數(shù)中至少有一個(gè)類(lèi)型不同。要求函數(shù)名相同。要求函數(shù)的返回值類(lèi)型一定不同。普通的成員函數(shù)。友元函數(shù)。外部函數(shù)。析構(gòu)函數(shù)14可定義作運(yùn)算符重載函數(shù)的是構(gòu)造函數(shù)。 成員函數(shù)。友元函數(shù)。類(lèi)以外的函數(shù)。析構(gòu)函數(shù)。無(wú)返回值的函數(shù)。15設(shè)置虛基類(lèi)的目的是,對(duì)虛基類(lèi)的論述,正確的是簡(jiǎn)化程序。消除二義性。提高運(yùn)行效率。減少目標(biāo)代碼。定義虛基類(lèi)時(shí)加virtual。 定義派生類(lèi)時(shí),在基類(lèi)名前加virtual。在基類(lèi)的成員函數(shù)前加virtual。在派生類(lèi)名前加virtual。16不能重載運(yùn)算
16、符&&: new ? : + ( ) delete17關(guān)于動(dòng)態(tài)聯(lián)編的描述,動(dòng)態(tài)聯(lián)編稱(chēng)為運(yùn)行時(shí)的多態(tài)性是通過(guò)什么來(lái)實(shí)現(xiàn)的。動(dòng)態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)的。動(dòng)態(tài)聯(lián)編是在運(yùn)行時(shí)確定所調(diào)用的函數(shù)的。動(dòng)態(tài)聯(lián)編調(diào)用的函數(shù),是用對(duì)象的指針或?qū)ο笠盟傅暮瘮?shù)。動(dòng)態(tài)聯(lián)編是在編譯時(shí)確定操作函數(shù)的。函數(shù)重載和運(yùn)算符重載。 繼承和虛函數(shù)。運(yùn)算符重載。 函數(shù)重載。18關(guān)于虛函數(shù)的描述,抽象類(lèi)論述虛函數(shù)是一個(gè)static類(lèi)型的成員函數(shù)。 虛函數(shù)是一個(gè)非成員函數(shù)。 虛函數(shù)是在基類(lèi)中用virtual 說(shuō)明,派生類(lèi)中重新定義的函數(shù)。派生類(lèi)的虛函數(shù)與基類(lèi)的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類(lèi)型。如果一個(gè)類(lèi)至少有一個(gè)純虛函數(shù)
17、,那么該類(lèi)為抽象類(lèi)。抽象類(lèi)只能用作其他類(lèi)的基類(lèi),不能建立抽象類(lèi)對(duì)象。抽象類(lèi)可以用來(lái)定義指針。抽象類(lèi)可以作為某個(gè)函數(shù)的返回類(lèi)型。19. 對(duì)虛基類(lèi)正確的論述定義基類(lèi)時(shí)加virtual。 定義派生類(lèi)時(shí),在基類(lèi)名前加virtual。成員函數(shù)前加virtual。在派生類(lèi)名前加virtual。20進(jìn)行文件操作時(shí)需要包含的文件,C+用cout 和 cin 進(jìn)行輸出/輸入操作時(shí)需要包含文件。iostream.h fstream.h stdio.h stdlib.h string.h math.h 21在定義類(lèi)時(shí),第一個(gè)保留字。 (class)22將數(shù)據(jù)結(jié)構(gòu)和作用于數(shù)據(jù)結(jié)構(gòu)上的操作組成一個(gè)實(shí)體,數(shù)據(jù)的表示方式和
18、對(duì)數(shù)據(jù)的操作細(xì)節(jié)被隱藏起來(lái),這是面向?qū)ο蟪绦蛟O(shè)計(jì)的 (封裝性)。而函數(shù)重是 (多態(tài)性)。23C+中類(lèi)的定義內(nèi)部,英文private段 ,protected 段,public段(私有段 保護(hù)段 公有段 )24. 定義了類(lèi)A,在主函數(shù)中如出現(xiàn): A *p, obj, ob10; 的語(yǔ)句。(則p是對(duì)象指針、obj是對(duì)象、ob是對(duì)象數(shù)組。)25C+的運(yùn)算符:<< >> new delete (輸入 輸出 申請(qǐng) 釋放)26 在C+定義的類(lèi)中,成員可分為二類(lèi),有三個(gè)段。(數(shù)據(jù) 函數(shù) 私有 公有 保護(hù)) 27 在一個(gè)類(lèi)定義中,可以聲明友元,友元可以是三種友元。(友元函數(shù) 友元成員 友
19、元類(lèi))28 C+中,函數(shù)說(shuō)明為void fun(int &i)的引用叫,函數(shù)說(shuō)明為void &fun(int i)的引用叫。( 參數(shù)引用 返回值引用 )29 繼承機(jī)制允許派生類(lèi)繼承基類(lèi)的什么,同時(shí),派生類(lèi)還可以增加新的什么。( 數(shù)據(jù)和操作 數(shù)據(jù)和操作 )30一個(gè)類(lèi)模板允許用戶(hù)為類(lèi)定義什么?使得類(lèi)中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)或返回值,能取什么類(lèi)型?模板是實(shí)現(xiàn)代碼重用機(jī)制的一種工具,函數(shù)模板的實(shí)例化、類(lèi)模板的實(shí)例化分別稱(chēng)為 (一個(gè)模式(子) 任意數(shù)據(jù)類(lèi)型 分別稱(chēng)為模板函數(shù) 、模板類(lèi))二、閱讀程序?qū)戇\(yùn)行結(jié)果、程序填空題(對(duì)照習(xí)題)1. 引用和函數(shù)調(diào)用2. 派生和繼承的應(yīng)用 3
20、. 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(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 fu
21、n1(int m, int 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<<&
22、quot;a="<<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; vo
23、id print();void 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 i
24、nt x, y, d;public: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 #inc
25、lude <iostream.h>#include <string>class strcl char *str; public: strcl()cout<<"現(xiàn)在進(jìn)入了strcl類(lèi)的缺省構(gòu)造函數(shù)"<<endl; strcl(char *st) cout<<"現(xiàn)在進(jìn)入了strcl類(lèi)的構(gòu)造函數(shù)"<<endl; str=new charstrlen(st)+1; strcpy(str,st);void show1() cout<<"name:"<<
26、;str; ;class girl strcl name; int age; public: girl():name() cout<<"現(xiàn)在進(jìn)入了girl類(lèi)的缺省構(gòu)造函數(shù)"<<endl; girl(char *st, int n ):name(st) cout<<"現(xiàn)在進(jìn)入了girl類(lèi)的構(gòu)造函數(shù)"<<endl; age=n; int show2() name.show1(); cout<<" age:" return age; ;void main() girl g1; gi
27、rl g2("zhang_fun", 20);答案:現(xiàn)在進(jìn)入了strcl類(lèi)的缺省構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了girl類(lèi)的缺省構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了strcl類(lèi)的構(gòu)造函數(shù) 現(xiàn)在進(jìn)入了girl類(lèi)的構(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<<"時(shí)間: "&
28、lt;<hours<<":"<<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>
29、60) temp.seconds=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();答案: 時(shí)間: 12:48:30 時(shí)間: 3:58:357.下面
30、的程序定義一個(gè)類(lèi)samp,有三類(lèi)數(shù)據(jù)成員和一個(gè)構(gòu)造函數(shù)和一個(gè)函數(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) <&
31、lt; endl; /輸出a cout << obj.getab(2) << endl; /輸出b cout << (5) << endl; /輸出c答案: . samp . b=m; . getab . obj.getab(1) . obj.c 8.下面的程序包含了日期(Date)類(lèi)的聲明,要求設(shè)計(jì)一個(gè)Brithtime類(lèi),它繼承了Date類(lèi),并且還有一項(xiàng)出生孩子的名字Childname,主程序顯示了一個(gè)小孩的名字和出生日期。請(qǐng)補(bǔ)足Brithtime類(lèi)的public部分。#include <iostream.h>#include &
32、lt;string.h>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ǔ)充Brit
33、htime類(lèi)的public部分;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<<"出生日期:&quo
34、t; Date:display(); 三、程序設(shè)計(jì)題 1C語(yǔ)言復(fù)習(xí)及C+基礎(chǔ)知識(shí)2定義類(lèi)、成員函數(shù)及構(gòu)造函數(shù)的習(xí)題 思考題、來(lái)自VC+6.0面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)提綱1. 下面是一個(gè)C程序,改寫(xiě)它,使它采用C+風(fēng)格的I/O語(yǔ)句。#include <stdio.h> #include <iostream.h>void main() int a,b,d,min; printf("輸入兩個(gè)整數(shù):"); cout<<"輸入兩個(gè)整數(shù):" scanf(”%d%d”,&a,&b); cin>>a; cin&
35、gt;>b; min=a>b?b:a; for(d=2;d<=min;d+) if(a%d=0)&&(b%d=0)break; if(d > min) printf("沒(méi)有公約數(shù)!n"); cout<<"沒(méi)有公約數(shù)!n" else printf("最小公約數(shù)是:%dn",d); cout<<"最小公約數(shù)是:"<<d<<endl;2. 從鍵盤(pán)輸入二個(gè)任意大小的數(shù),在屏幕上從小到大輸出這二個(gè)數(shù)。#include <iostre
36、am.h>void main() int a, b, c; cin>>a; cin>>b; if(a>b) c=a; a=b; b=c; cout<<a<<” ”<<b<<endl;3. 定義一個(gè)基類(lèi)圓circle,私有段有圓的半徑,公有段有構(gòu)造函數(shù),能顯示圓面積等。定義派生類(lèi)ex_square為圓的外切正方形,有構(gòu)造函數(shù),能顯示正方形面積。在主函數(shù)中定義外切正方形對(duì)象,其圓半徑為10,顯示兩者面積。答案:#include <iostream.h>class circle float r; /聲明一
37、個(gè)圓類(lèi)public: circle (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 /派生一個(gè)圓外切正方形類(lèi) 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. 定義一個(gè)基類(lèi)長(zhǎng)方形base,私有段有長(zhǎng)a和寬b,公有段有構(gòu)造函數(shù),能顯示長(zhǎng)方形面積等。定義以該長(zhǎng)方形為底面積的派生類(lèi)長(zhǎng)方體cuboid,有高h(yuǎn),有構(gòu)造函數(shù),能顯示長(zhǎng)方體體積。在主函數(shù)中定義長(zhǎng)方體對(duì)象,其長(zhǎng)、寬、高分別為10,20,5,顯示出長(zhǎng)方體體積和長(zhǎng)方形底面積。答案:#include <iostream.h>class base float a,b
39、; /聲明長(zhǎng)方形public: base (float a1=0, float b1=0) a=a1; b=b1; void area ( ) /函數(shù)area ( ) 顯示長(zhǎng)方形面積 cout<< "長(zhǎng)方形面積是:"<< a*b <<endl; float getr() return a*b; ;class cuboid : public base /以該長(zhǎng)方形為底的派生類(lèi)長(zhǎng)方體 float h; public: cuboid (float a1, float b1, float h1 ) : base (a1,b1) h=h1; void body ( ) /函數(shù)body ( ) 顯示長(zhǎng)方體體積 cout << "長(zhǎng)方體體積是:"<<h*getr()<<endl; ;void main( ) cuboid ob(10,20,5); ob.area(); ob.body();5. 定義一個(gè)基類(lèi)建筑物building,私有段有樓房層數(shù)fr,房間數(shù)r,樓房總面積m,有構(gòu)造函數(shù)。定義派生類(lèi)住宅樓house,有臥室數(shù)量 br,浴室數(shù)量 dr,有構(gòu)造函數(shù),能顯示住宅樓所有數(shù)據(jù)。定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 6 讀寫(xiě)課第二課時(shí)教學(xué)設(shè)計(jì) - 2024-2025學(xué)年外研版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 2025至2030年中國(guó)高精度7天可編程溫控器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 全國(guó)青島版信息技術(shù)八年級(jí)下冊(cè)專(zhuān)題青春歲月紀(jì)念冊(cè)第3課二、《制作藝術(shù)字》教學(xué)設(shè)計(jì)
- Unit 5 Lesson 27 Whats Your Advice2024-2025學(xué)年八年級(jí)英語(yǔ)上冊(cè)同步教學(xué)設(shè)計(jì)(冀教版)河北專(zhuān)版
- 2025年有機(jī)玻璃眼鏡展示架項(xiàng)目可行性研究報(bào)告
- 2025年旋磁針項(xiàng)目可行性研究報(bào)告
- 浙江省人教版歷史與社會(huì)九年級(jí)上冊(cè) 1.3 悄然轉(zhuǎn)變的社會(huì)生活 教學(xué)設(shè)計(jì)及反思
- Unit 6 Enjoy Cycling Topic 2 How about exploring Tian'anmen Square Section A 教學(xué)設(shè)計(jì) 2024-2025學(xué)年仁愛(ài)科普版英語(yǔ)八年級(jí)下冊(cè)
- 2025年型鋼構(gòu)件項(xiàng)目可行性研究報(bào)告
- 2025至2030年中國(guó)樹(shù)脂澆注絕緣電流互感器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 監(jiān)理表格.監(jiān)理.3.復(fù)工令
- 傳播學(xué)研究方法-第三章
- 可愛(ài)的四川精編版課件
- 蘇教版二年級(jí)數(shù)學(xué)下冊(cè)第一單元第一課時(shí)
- 二年級(jí)下冊(cè)科學(xué)考點(diǎn)歸納
- 債權(quán)法總論課件
- 醫(yī)院先進(jìn)科室、先進(jìn)個(gè)人評(píng)選辦法
- 新部編版四年級(jí)下冊(cè)道德與法治全冊(cè)優(yōu)秀教學(xué)課件(1-12課)
- 港口危險(xiǎn)貨物安全管理人員機(jī)考試題庫(kù)(含答案)
- 門(mén)診醫(yī)師出診申請(qǐng)表(2022版)
- 材料進(jìn)場(chǎng)檢驗(yàn)項(xiàng)目清單
評(píng)論
0/150
提交評(píng)論