歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

Visual-C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程與實(shí)驗(yàn)(第二版)清華大學(xué)出版社1—8章答案

  • 資源ID:10028109       資源大小:200.50KB        全文頁(yè)數(shù):57頁(yè)
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

Visual-C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程與實(shí)驗(yàn)(第二版)清華大學(xué)出版社1—8章答案

第一章 1 什么是面向?qū)ο蟪绦蛟O(shè)計(jì) 它與傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì)有什么不同 面向?qū)ο蟪绦蛟O(shè)計(jì)既吸取了結(jié)構(gòu)化程序設(shè)計(jì)的一切優(yōu)點(diǎn) 又考慮了現(xiàn)實(shí)世 界與面向?qū)ο蠼饪臻g的映射關(guān)系 它所追求的目標(biāo)是將現(xiàn)實(shí)世界的問(wèn)題求解盡 可能簡(jiǎn)單化 面向?qū)ο蟪绦蛟O(shè)計(jì)將數(shù)據(jù)及對(duì)數(shù)據(jù)的操作放在一起 作為一個(gè)相互依存 不可分割的整體來(lái)處理 它采用了數(shù)據(jù)抽象和信息隱藏技術(shù) 它將對(duì)象及對(duì)對(duì) 象的操作抽象成一種新的數(shù)據(jù)類(lèi)型 類(lèi) 并且考慮不同對(duì)象之間的聯(lián)系和對(duì)象 所在類(lèi)的重要性 面向?qū)ο蟪绦蛟O(shè)計(jì)優(yōu)于傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計(jì) 其優(yōu)越性表現(xiàn)在 它有希 望解決軟件工程的兩個(gè)主要的問(wèn)題 軟件復(fù)雜性控制和軟件生產(chǎn)率的提高 此外它還符合人類(lèi)的思維習(xí)慣 能夠自然地表現(xiàn)現(xiàn)實(shí)世界的實(shí)體和問(wèn)題 它對(duì) 軟件開(kāi)發(fā)過(guò)程具有重要的意義 在面向?qū)ο蟪绦蛟O(shè)計(jì)中可以用下面的式子表示程序 程序 對(duì)象 對(duì)象 對(duì)象 對(duì)象 算法 數(shù)據(jù)結(jié)構(gòu) 程序設(shè)計(jì)語(yǔ)言 語(yǔ)言環(huán)境 在結(jié)構(gòu)化程序設(shè)計(jì)中可以用下面的式子表示程序 程序 數(shù)據(jù)結(jié)構(gòu) 算法 程序設(shè)計(jì)語(yǔ)言 語(yǔ)言環(huán)境 2 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言有哪幾類(lèi) 1 LISP 家族 LISP 是 50 年代開(kāi)發(fā)出來(lái)的一種語(yǔ)言 它以表處理為特色 是一種人工智 能語(yǔ)言 70 年代以來(lái) 在 LISP 基礎(chǔ)上開(kāi)發(fā)了很多 LISP 家族的面向?qū)ο笳Z(yǔ)言 2 Simula Simula 語(yǔ)言是 60 年代開(kāi)發(fā)出來(lái)的 在 Simula 中引入了幾個(gè)面向?qū)ο蟪绦?設(shè)計(jì)語(yǔ)言中最重要的概念和特性 即數(shù)據(jù)抽象 類(lèi)和繼承性機(jī)制 Simula67 是 它具有代表性的一個(gè)版本 70 年代發(fā)展起來(lái)的 CLU Ada Modula 2 等語(yǔ)言是在 它的基礎(chǔ)上發(fā)展起來(lái)的 3 Smalltalk Smalltalk 是第一個(gè)真正的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 它體現(xiàn)了純粹的 OOP 設(shè)計(jì)思想 是最純的 OOP 語(yǔ)言 它起源于 Simula 語(yǔ)言 盡管 Smalltalk 不斷完 善 但在那個(gè)時(shí)期 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言并沒(méi)有得到廣泛的重視 程序設(shè)計(jì) 的主流是結(jié)構(gòu)化程序設(shè)計(jì) 4 C 家族 在 19 世紀(jì) 80 年代 C 語(yǔ)言成為一種極其流行 應(yīng)用非常廣泛的語(yǔ)言 C 是在 C 語(yǔ)言的基礎(chǔ)上進(jìn)行擴(kuò)充 并增加了類(lèi)似 Smalltalk 語(yǔ)言中相應(yīng)的對(duì)象機(jī) 制 它將 類(lèi) 看作是用戶(hù)定義類(lèi)型 使其擴(kuò)充比較自然 C 以其高效的執(zhí)行 效率贏得了廣大程序設(shè)計(jì)員的青睞 在 C 中提供了對(duì) C 語(yǔ)言的兼容性 因此 很多已有的 C 程序稍加改造甚至不加改造就可以重用 許多有效的算法也可以 重新利用 它是一種混合型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 由于它的出現(xiàn) 才使面 向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言越來(lái)越得到重視和廣泛的應(yīng)用 JAVA 語(yǔ)言是一種適用于分布式計(jì)算的新型面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 可以看 作是 C 語(yǔ)言的派生 它從 C 語(yǔ)言中繼承了大量的語(yǔ)言成分 拋棄了 C 語(yǔ)言 中冗余的 容易引起問(wèn)題的功能 增加了多線程 異常處理 網(wǎng)絡(luò)程序設(shè)計(jì)等 方面的支持 掌握了 C 語(yǔ)言 可以很快學(xué)會(huì) JAVA 語(yǔ)言 3 面向?qū)ο笙到y(tǒng)有哪些特性 分別加以解釋 1 抽象性 abstract 抽象是一種從一般的觀點(diǎn)看待事物的方法 它要求程序員集中于事物的本 質(zhì)特征 而不是具體細(xì)節(jié)或具體實(shí)現(xiàn) 類(lèi)的概念來(lái)自人們認(rèn)識(shí)自然 認(rèn)識(shí)社會(huì) 的過(guò)程 在這一過(guò)程中 人們主要使用兩種方法 從特殊到一般的歸納法和從 一般到特殊的演繹法 在歸納的過(guò)程中 我們從一個(gè)個(gè)具體的事物中把共同的 特征抽取出來(lái) 形成一個(gè)一般的概念 這就是 歸類(lèi) 在演繹的過(guò)程中 我們 又把同類(lèi)的事物 根據(jù)不同的特征分成不同的小類(lèi) 這就是 分類(lèi) 對(duì)于一個(gè) 具體的類(lèi) 它有許多具體的個(gè)體 我們稱(chēng)這些個(gè)體叫做 對(duì)象 2 封裝性 encapsulation 所謂數(shù)據(jù)封裝就是指一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)的操作集合組裝在一起 形成一個(gè)能動(dòng)的實(shí)體 也就是對(duì)象 數(shù)據(jù)封裝就是給數(shù)據(jù)提供了與外界聯(lián)系的 標(biāo)準(zhǔn)接口 無(wú)論是誰(shuí) 只有通過(guò)這些接口 使用規(guī)范的方式 才能訪問(wèn)這些數(shù) 據(jù) 數(shù)據(jù)封裝是軟件工程發(fā)展的必然產(chǎn)物 使得程序員在設(shè)計(jì)程序時(shí)可以專(zhuān)注 于自己的對(duì)象 同時(shí)也切斷了不同模塊之間數(shù)據(jù)的非法使用 減少了出錯(cuò)的可 能性 3 繼承性 inheritance 從已有的對(duì)象類(lèi)型出發(fā)建立一種新的對(duì)象類(lèi)型 使它繼承原對(duì)象的特點(diǎn)和 功能 這種思想是面向?qū)ο笤O(shè)計(jì)方法的主要貢獻(xiàn) 繼承是對(duì)許多問(wèn)題中分層特 性的一種自然描述 因而也是類(lèi)的具體化和被重新利用的一種手段 它所表達(dá) 的就是一種對(duì)象類(lèi)之間的相交關(guān)系 它使得某類(lèi)對(duì)象可以繼承另外一類(lèi)對(duì)象的 特征和能力 繼承所具有的作用有兩個(gè)方面 一方面可以減少代碼冗余 另一 方面可以通過(guò)協(xié)調(diào)性來(lái)減少相互之間的接口和界面 4 多態(tài)性 polymorphism 不同的對(duì)象接收到相同的消息時(shí)產(chǎn)生多種完全不同的行為的現(xiàn)象稱(chēng)為多態(tài) 性 C 語(yǔ)言支持兩種多態(tài)性即編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性 編譯時(shí)的多 態(tài)性通過(guò)重載函數(shù)實(shí)現(xiàn) 而運(yùn)行時(shí)的多態(tài)性通過(guò)虛函數(shù)實(shí)現(xiàn) 使用多態(tài)性可以 大大提高了我們解決復(fù)雜問(wèn)題的能力 4 解釋類(lèi) 對(duì)象 消息和方法的概念 1 類(lèi) class 在面向?qū)ο笙到y(tǒng)中 并不是將各個(gè)具體的對(duì)象都進(jìn)行描述 而是忽略其非本質(zhì)的特性 找出其共性 將對(duì)象劃分成不同的類(lèi) 這一過(guò)程為抽象過(guò)程 類(lèi)是對(duì)象的抽象及描述 是 具有共同屬性和操作的多個(gè)對(duì)象的相似特性的統(tǒng)一描述體 在類(lèi)的描述中 每個(gè)類(lèi)要有一 個(gè)名字標(biāo)識(shí) 用以表示一組對(duì)象的共同特征 類(lèi)中的每個(gè)對(duì)象都是該類(lèi)的實(shí)例 類(lèi)提供了 完整的解決特定問(wèn)題的能力 因?yàn)轭?lèi)描述了數(shù)據(jù)結(jié)構(gòu) 對(duì)象屬性 算法 服務(wù) 方法 和 外部接口 消息協(xié)議 是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型 2 對(duì)象 object 在面向?qū)ο笙到y(tǒng)中 對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體 它是構(gòu)成系統(tǒng)的一 個(gè)基本單位 一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成 屬性和服務(wù)是 構(gòu)成對(duì)象的兩個(gè)主要因素 屬性是一組數(shù)據(jù)機(jī)構(gòu)的集合 表示對(duì)象的一種狀態(tài) 對(duì)象的狀 態(tài)只供對(duì)象自身使用 用來(lái)描述靜態(tài)特性 而服務(wù)是用來(lái)描述對(duì)象動(dòng)態(tài)特征 行為 的一 個(gè)操作序列 是對(duì)象一組功能的體現(xiàn) 對(duì)象是類(lèi)的實(shí)例 3 消息 message 消息是面向?qū)ο笙到y(tǒng)中實(shí)現(xiàn)對(duì)象間的通信和請(qǐng)求任務(wù)的操作 是要求某個(gè)對(duì)象執(zhí)行其 中某個(gè)功能操作的規(guī)格說(shuō)明 發(fā)送消息的對(duì)象稱(chēng)為發(fā)送者 接受消息的對(duì)象稱(chēng)為接收者 對(duì)象間的聯(lián)系 只能通過(guò)消息來(lái)進(jìn)行 對(duì)象在接收到消息時(shí)才被激活 4 方法 method 在面向?qū)ο蟪绦蛟O(shè)計(jì)中 要求某一對(duì)象做某一操作時(shí) 就向?qū)ο蟀l(fā)送一個(gè)相應(yīng)的消息 當(dāng)對(duì)象接收到發(fā)向它的消息時(shí) 就調(diào)用有關(guān)的方法 執(zhí)行相應(yīng)的操作 方法就是對(duì)象所能 執(zhí)行的操作 方法包括界面和方法體兩部分 方法的界面就是消息的模式 它給出了方法 的調(diào)用協(xié)議 方法體則是實(shí)現(xiàn)某種操作的一系列計(jì)算步驟 也就是一段程序 消息和方法 的關(guān)系是 對(duì)象根據(jù)接收到的消息 調(diào)用相應(yīng)的方法 反過(guò)來(lái) 有了方法 對(duì)象才能響應(yīng) 相應(yīng)的消息 所以消息模式與方法界面應(yīng)該是一致的 同時(shí) 只要方法界面保持不變 方 法體的改動(dòng)不會(huì)影響方法的調(diào)用 在 C 語(yǔ)言中方法是通過(guò)函數(shù)來(lái)實(shí)現(xiàn)的 稱(chēng)為成員函數(shù) 第二章 1 分析下列程序的執(zhí)行結(jié)果 輸出隨機(jī)數(shù) 2 分析下列程序的執(zhí)行結(jié)果 Comment 園園園園1 丟失分號(hào) Comment 園園園園2 丟失 float數(shù)據(jù) 類(lèi)型 Comment 園園園園3 此處去掉了 Comment 園園園園4 此處調(diào)用的是求 長(zhǎng)方形面積的函數(shù) 求出的面積為 0 而并不是求圓的面積 i 0 3 C 語(yǔ)言對(duì) C語(yǔ)言在結(jié)構(gòu)化程序設(shè)計(jì)方面進(jìn)行了哪些擴(kuò)充 主要在以下方面進(jìn)行了擴(kuò)充 文件擴(kuò)展名 注釋符 名字空間 輸入輸出 變量的定義 強(qiáng)制 類(lèi)型轉(zhuǎn)換 動(dòng)態(tài)內(nèi)存的分配與釋放 作用域運(yùn)算符 引用 const 修飾符 字符串 函數(shù) 4 下述 C 程序有若干處錯(cuò)誤 試找出并糾正之 正確程序?yàn)?include const float PAI 3 14159265 float square float r return PAI r r float square float high float length 0 return high length float fs float float 0 void main fs cout The circle s square is fs 1 0 n 5 引用類(lèi)型與指針類(lèi)型有什么區(qū)別 指針的內(nèi)容或值是某一變量的內(nèi)存單元地址 而引用則與初始化它的變量 具有相同的內(nèi)存單元地址 指針是個(gè)變量 可以把它再賦值成其它的地址 然 而 建立引用時(shí)必須進(jìn)行初始化并且決不會(huì)再指向其它不同的變量 C 沒(méi)有提供訪問(wèn)引用本身地址的方法 因?yàn)樗c指針或其它變量的地址不 同 它沒(méi)有任何意義 引用總是作為變量的別名使用 引用的地址也就是變量 的地址 引用一旦初始化 就不會(huì)與初始化它的變量分開(kāi) 6 函數(shù) 內(nèi)聯(lián)函數(shù)以及宏的區(qū)別 程序的模塊在 C 中通過(guò)函數(shù)來(lái)實(shí)現(xiàn) 函數(shù)由函數(shù)說(shuō)明和函數(shù)體 2 部分組成 內(nèi)聯(lián)函數(shù)是 C 語(yǔ)言特有的一種函數(shù)附加類(lèi)別 是通過(guò)在函數(shù)聲明之前插入 inline 關(guān)鍵字實(shí)現(xiàn)的 編譯器會(huì)將編譯后的全部?jī)?nèi)聯(lián)函數(shù)的目的機(jī)器代碼 復(fù)制到程序內(nèi)所有的引用位置并把往返傳送的數(shù)據(jù)也都溶合進(jìn)引用位置的計(jì)算 當(dāng)中 用來(lái)避免函數(shù)調(diào)用機(jī)制所帶來(lái)的開(kāi)銷(xiāo) 提高程序的執(zhí)行效率 顯然這是 以增加程序代碼空間為代價(jià)換來(lái)的 宏定義是編譯預(yù)處理命令 分為帶參數(shù)的和不帶參數(shù)的宏定義 在編譯之 前進(jìn)行預(yù)處理時(shí) 用宏定義中的字符串替換程序中所有出現(xiàn)的宏名 7 函數(shù)重載有什么好處 函數(shù)重載使函數(shù)方便使用 便于記憶 也使程序設(shè)計(jì)更加靈活 增加程序 的可讀性 例如 求兩個(gè)數(shù)中最大值的函數(shù) max 不管其參數(shù)是整數(shù)類(lèi)型 實(shí) 數(shù)類(lèi)型 字符串 都可以使用同名函數(shù)來(lái)實(shí)現(xiàn) 調(diào)用時(shí)只需使用 max 就可以了 編譯器將根據(jù)實(shí)參的類(lèi)型判斷應(yīng)該調(diào)用哪一個(gè)函數(shù) 8 模板有什么作用 函數(shù)模板和模板函數(shù)有什么區(qū)別 所謂模板是一種使用無(wú)類(lèi)型參數(shù)來(lái)產(chǎn)生一系列函數(shù)或類(lèi)的機(jī)制 是 C 的一 個(gè)重要特征 通過(guò)模板可以產(chǎn)生類(lèi)或函數(shù)的集合 使它們操作不同的數(shù)據(jù)類(lèi)型 從而避免為每一種數(shù)據(jù)類(lèi)型產(chǎn)生一個(gè)單獨(dú)的類(lèi)或函數(shù) 函數(shù)模板提供了傳遞類(lèi)型的機(jī)制 函數(shù)模板定義不是一個(gè)實(shí)實(shí)在在的函數(shù) 編譯系統(tǒng)不為其產(chǎn)生任何執(zhí)行代碼 該定義只是對(duì)函數(shù)的描述 表示它每次能 單獨(dú)處理在類(lèi)型形式參數(shù)表中說(shuō)明的數(shù)據(jù)類(lèi)型 函數(shù)模板只是說(shuō)明 不能直接執(zhí)行 需要實(shí)例化為模板函數(shù)后才能執(zhí)行 當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個(gè)函數(shù)調(diào)用 時(shí) 將根據(jù)中的類(lèi)型生成一個(gè)重載函數(shù) 即模板函數(shù) 該模板函數(shù)的 定義體與函數(shù)模板的函數(shù)定義體相同 而的類(lèi)型則以的實(shí)際 類(lèi)型為依據(jù) 第三章 1 為什么要引入構(gòu)造函數(shù)和析構(gòu)函數(shù) 對(duì)象的初始化是指對(duì)象數(shù)據(jù)成員的初始化 在使用對(duì)象前 一定要初始化 由于數(shù)據(jù) 成員一般為私有的 private 所以不能直接賦值 對(duì)對(duì)象初始化有以下兩種方法 類(lèi)中提供一個(gè)普通成員函數(shù)來(lái)初始化 但是會(huì)造成使用上的不便 使用對(duì)象前必須顯 式調(diào)用該函數(shù) 和不安全 未調(diào)用初始化函數(shù)就使用對(duì)象 當(dāng)定義對(duì)象時(shí) 編譯程序自動(dòng)調(diào)用構(gòu)造函數(shù) 析構(gòu)函數(shù)的功能是當(dāng)對(duì)象被撤消時(shí) 釋放該對(duì)象占用的內(nèi)存空間 析構(gòu)函數(shù)的作用與 構(gòu)造函數(shù)正好相反 一般情況下 析構(gòu)函數(shù)執(zhí)行構(gòu)造函數(shù)的逆操作 在對(duì)象消亡時(shí) 系統(tǒng) 將自動(dòng)調(diào)用析構(gòu)函數(shù) 執(zhí)行一些在對(duì)象撤消前必須執(zhí)行的清理任務(wù) 2 類(lèi)的公有 私有和保護(hù)成員之間的區(qū)別是什么 私有成員 private 私有成員是在類(lèi)中被隱藏的部分 它往往是用來(lái)描 述該類(lèi)對(duì)象屬性的一些數(shù)據(jù)成員 私有成員只能由本類(lèi)的成員函數(shù)或某些特殊 說(shuō)明的函數(shù) 如第 4 章講到的友員函數(shù) 訪問(wèn) 而類(lèi)的外部根本就無(wú)法訪問(wèn) 實(shí)現(xiàn)了訪問(wèn)權(quán)限的有效控制 使數(shù)據(jù)得到有效的保護(hù) 有利于數(shù)據(jù)的隱藏 使 內(nèi)部數(shù)據(jù)不能被任意的訪問(wèn)和修改 也不會(huì)對(duì)該類(lèi)以外的其余部分造成影響 使模塊之間的相互作用被降低到最小 private 成員若處于類(lèi)聲明中的第一部 分 可省略關(guān)鍵字 private 公有成員 public 公有成員對(duì)外是完全開(kāi)放的 公有成員一般是成員 函數(shù) 它提供了外部程序與類(lèi)的接口功能 用戶(hù)通過(guò)公有成員訪問(wèn)該類(lèi)對(duì)象中 的數(shù)據(jù) 保護(hù)成員 protected 只能由該類(lèi)的成員函數(shù) 友元 公有派生類(lèi)成員 函數(shù)訪問(wèn)的成員 保護(hù)成員與私有成員在一般情況下含義相同 它們的區(qū)別體 現(xiàn)在類(lèi)的繼承中對(duì)產(chǎn)生的新類(lèi)的影響不同 具體內(nèi)容將在第 5 章中介紹 缺省 訪問(wèn)控制 未指定 private protected public 訪問(wèn)權(quán)限 時(shí) 系統(tǒng)認(rèn)為是私 有 private 成員 3 什么是拷貝構(gòu)造函數(shù) 它何時(shí)被調(diào)用 拷貝構(gòu)造函數(shù)的功能是用一個(gè)已有的對(duì)象來(lái)初始化一個(gè)被創(chuàng)建的同類(lèi)對(duì)象 是一種特殊的構(gòu)造函數(shù) 具有一般構(gòu)造函數(shù)的所有特性 當(dāng)創(chuàng)建一個(gè)新對(duì)象時(shí) 系統(tǒng)自動(dòng)調(diào)用它 其形參是本類(lèi)對(duì)象的引用 它的特殊功能是將參數(shù)代表的對(duì) 象逐域拷貝到新創(chuàng)建的對(duì)象中 在以下四種情況下系統(tǒng)會(huì)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù) 用類(lèi)的一個(gè)對(duì)象去初始化另一個(gè)對(duì)象 cat cat1 cat cat2 cat1 創(chuàng)建 cat2 時(shí)系統(tǒng)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù) 用 cat1 初始化 cat2 用類(lèi)的一個(gè)對(duì)象去初始化另一個(gè)對(duì)象時(shí)的另外一種形式 Cat cat2 cat1 注意并非 cat cat1 cat2 cat2 cat1 對(duì)象作為函數(shù)參數(shù)傳遞時(shí) 調(diào)用拷貝構(gòu)造函數(shù) f cat a 定義 f 函數(shù) 形參為 cat 類(lèi)對(duì)象 cat b 定義對(duì)象 b f b 進(jìn)行 f 函數(shù)調(diào)用時(shí) 系統(tǒng)自動(dòng)調(diào)用拷貝構(gòu)造函數(shù) 如果函數(shù)的返回值是類(lèi)的對(duì)象 函數(shù)調(diào)用返回時(shí) 調(diào)用拷貝構(gòu)造函數(shù) 4 設(shè)計(jì)一個(gè)計(jì)數(shù)器類(lèi) 當(dāng)建立該類(lèi)的對(duì)象時(shí)其初始狀態(tài)為 0 考慮為計(jì)數(shù)器定義哪些成員 counter h ifndef counter h define counter h class counter private int count public counter void setCount int i int getCount void displayCount void incrementCount void decrementCount counter endif counter cpp include counter h include counter counter count 0 void counter displayCount cout count endl int counter getCount return count void counter setCount int i count i void counter incrementCount count void counter decrementCount count MAIN CPP include counter h include void main counter c1 c1 displayCount c1 setCount 4 c1 displayCount for int i 0 i 10 i c1 incrementCount c1 displayCount 5 定義一個(gè)時(shí)間類(lèi) 能提供和設(shè)置由時(shí) 分 秒組成的時(shí)間 并編寫(xiě)出應(yīng) 用程序 定義時(shí)間對(duì)象 設(shè)置時(shí)間 輸出該對(duì)象提供的時(shí)間 include class Time int hour minute second public Time int h 0 int m 0 int s 0 hour h minute m second s void setHour int h hour h void setMinute int m minute m void setSecond int s second s void display cout hour minute second endl void main Time t t display t setHour 13 t setMinute 15 t setSecond 30 t display 6 設(shè)計(jì)一個(gè)學(xué)生類(lèi) student 它具有的私有數(shù)據(jù)成員是 注冊(cè)號(hào) 姓名 數(shù)學(xué) 英語(yǔ) 計(jì)算機(jī)成績(jī) 具有的公有成員函數(shù)是 求三門(mén)課總成績(jī)的函數(shù) sum 求三門(mén)課平均成績(jī)的函數(shù) average 顯示學(xué)生數(shù)據(jù)信息的函數(shù) print 獲 取學(xué)生注冊(cè)號(hào)的函數(shù) get reg num 設(shè)置學(xué)生數(shù)據(jù)信息的函數(shù) set stu inf 編制主函數(shù) 說(shuō)明一個(gè) student 類(lèi)對(duì)象的數(shù)組并進(jìn)行全班學(xué)生信息的輸入 與設(shè)置 而后求出每一學(xué)生的總成績(jī) 平均成績(jī) 全班學(xué)生總成績(jī)最高分 全 班學(xué)生總平均分 并在輸入一個(gè)注冊(cè)號(hào)后 輸出該學(xué)生有關(guān)的全部數(shù)據(jù)信息 include include using namespace std class Student private int num char name 10 float math float english float computer public void set stu inf int n char ch float m float e float c num n strcpy name ch math m english e computer c float sum return math english computer float average return math english computer 3 int get reg num return num void print cout 學(xué)號(hào) num endl 姓名 name endl 數(shù)學(xué) math endl 英語(yǔ) english endl 計(jì)算機(jī) computer endl 總分 sum endl 平均分 average endl void main Student stu 50 int i q a z x max 0 aver 0 i 為循環(huán)變量 q 學(xué)號(hào) a 數(shù)學(xué) 成績(jī) z 英語(yǔ)成績(jī) x 計(jì)算機(jī)成績(jī) int count 0 表示學(xué)生人數(shù) char we new char 10 輸入學(xué)生信息 for cout 請(qǐng)輸入學(xué)生的學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 若 輸入的學(xué)號(hào)為 0 則表示退出 q we a z x if q 0 break stu count set stu inf q we a z x if max a z x else max a z x aver a z x 輸出所有學(xué)生信息 cout 學(xué)生信息為 endl endl for i 0 i count i stu i print cout endl cout 全班學(xué)生總成績(jī)最高分為 max endl 全班學(xué)生總平均分為 aver 3 endl endl cout 請(qǐng)輸入要查的學(xué)生的學(xué)號(hào) q for i 0 i count i if q stu i get reg num cout 此學(xué)生信息為 endl stu i print break if i count cout 查無(wú)此人 endl 7 模擬棧模型的操作 考慮順序棧和鏈棧兩種形式 鏈棧 include class Stack 定義堆棧類(lèi) struct Node int content Node next top public Stack top NULL 構(gòu)造函數(shù)的定義 bool push int i 壓棧成員函數(shù)的聲明 bool pop int 彈棧成員函數(shù)的聲明 bool Stack push int i 壓棧成員函數(shù)的定義 Node p new Node if p NULL cout content i p next top top p return true bool Stack pop int i p content delete p return true void main Stack st1 st2 定義對(duì)象 st1 和 st2 int x for int i 1 i 5 i st1 push i 壓棧成員函數(shù)的調(diào)用 st2 push i 壓棧成員函數(shù)的調(diào)用 cout stack1 endl for i 1 i 3 i st1 pop x 彈棧成員函數(shù)的調(diào)用 cout x endl st1 push 20 for i 1 i 4 i if st1 pop x cout x endl else break cout stack2 endl while st2 pop x cout x endl 順序棧采用一維數(shù)組來(lái)實(shí)現(xiàn) 略 8 寫(xiě)出下列程序的運(yùn)行結(jié)果 Constructing 22 11 Constructing 20 10 display 22 11 display 20 10 Destructing20 10 Destructing22 11 第五章 1 什么是類(lèi)的繼承與派生 繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)的第二個(gè)重要特性 通過(guò)繼承實(shí)現(xiàn)了數(shù)據(jù)抽象基礎(chǔ)上 的代碼重用 繼承是對(duì)許多問(wèn)題中分層特性的一種自然描述 因而也是類(lèi)的具體化和被重 新利用的一種手段 它所表達(dá)的就是一種對(duì)象類(lèi)之間的相交關(guān)系 它使得某類(lèi)對(duì)象可以繼 承另外一類(lèi)對(duì)象的特征和能力 繼承所具有的作用有兩個(gè)方面 一方面可以減少代碼冗余 另一方面可以通過(guò)協(xié)調(diào)性來(lái)減少相互之間的接口和界面 通過(guò)繼承方式定義的子類(lèi)也稱(chēng)為 派生類(lèi) 2 類(lèi)的三種繼承方式之間的區(qū)別是什么 類(lèi)的繼承方式有 public 公有 繼承 protected 保護(hù) 繼承和 private 私有 繼 承三種 對(duì)于不同的繼承方式 會(huì)導(dǎo)致基類(lèi)成員原來(lái)的訪問(wèn)屬性在派生類(lèi)中有所變化 表 5 1 列出了不同繼承方式下基類(lèi)成員訪問(wèn)屬性的變化情況 表 5 1 不同繼承方式下基類(lèi)成員的訪問(wèn)屬性 訪問(wèn)屬性 繼承方式 public protected private public public protected 不可訪問(wèn)的 protected protected protected 不可訪問(wèn)的 private private private 不可訪問(wèn)的 說(shuō)明 該表第 1 列給出 3 種繼承方式 第 1 行給出基類(lèi)成員的 3 種訪問(wèn)屬性 其余單元格內(nèi) 容為基類(lèi)成員在派生類(lèi)中的訪問(wèn)屬性 從表中可以看出 1 基類(lèi)的私有成員在派生類(lèi)中均是不可訪問(wèn)的 它只能由基類(lèi)的成員訪問(wèn) 2 在公有繼承方式下 基類(lèi)中的公有成員和保護(hù)成員在派生類(lèi)中的訪問(wèn)屬性不變 3 在保護(hù)繼承方式下 基類(lèi)中的公有成員和保護(hù)成員在派生類(lèi)中均為保護(hù)的 4 在私有繼承方式下 基類(lèi)中的公有成員和保護(hù)成員在派生類(lèi)中均為私有的 需要注意的是 保護(hù)成員與私有成員唯一的不同是當(dāng)發(fā)生派生后 處在基類(lèi) protected 區(qū)的成員可被 派生類(lèi)直接訪問(wèn) 而私有成員在派生類(lèi)中是不可訪問(wèn)的 在同一類(lèi)中私有成員和保護(hù)成員 的用法完全一樣 3 派生類(lèi)能否直接訪問(wèn)基類(lèi)的私有成員 若否 應(yīng)如何實(shí)現(xiàn) 派生類(lèi)不能直接訪問(wèn)基類(lèi)的私有成員 具體實(shí)現(xiàn)方式 1 在類(lèi)定義體中增加保護(hù)段 為了便于派生類(lèi)的訪問(wèn) 可以將基類(lèi)私有成員中需提供給派生類(lèi)訪問(wèn)的部分定義為保 護(hù)段成員 保護(hù)段成員可以被它的派生類(lèi)訪問(wèn) 但是對(duì)于外界是隱藏起來(lái)的 這樣 既方 便了派生類(lèi)的訪問(wèn) 又禁止外界對(duì)它的派生類(lèi)訪問(wèn) 這種方式的缺點(diǎn)是在公有派生的情況下 如果把成員設(shè)為保護(hù)訪問(wèn)控制 則為外界訪 問(wèn)基類(lèi)的保護(hù)段成員提供了機(jī)會(huì) 而三種派生方式 我們經(jīng)常使用的是公有派生 2 將需訪問(wèn)基類(lèi)私有成員的派生類(lèi)成員函數(shù)聲明為基類(lèi)的友元 這樣派生類(lèi)中的其它成員函數(shù)均無(wú)權(quán)訪問(wèn)它 外界不可能通過(guò)派生新類(lèi)來(lái)達(dá)到訪問(wèn)基類(lèi)私有成員的目的 4 派生類(lèi)構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序是怎樣的 在多繼承中 派生類(lèi) 構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序又是怎樣的 構(gòu)造函數(shù)的執(zhí)行順序 先祖先 基類(lèi) 再客人 對(duì)象成員 后自己 派生類(lèi)本身 析構(gòu)函數(shù)的執(zhí)行順序和構(gòu)造函數(shù)正好嚴(yán)格相反 先自己 派生類(lèi)本身 再客人 對(duì)象成 員 后祖先 基類(lèi) 在多個(gè)基類(lèi)之間嚴(yán)格按照派生類(lèi)定義時(shí)從左到右的順序來(lái)排列先后 而析構(gòu)函數(shù)的調(diào) 用順序剛好與構(gòu)造函數(shù)的相反 5 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用是什么 在下面兩種情況下 必須定義派生類(lèi)的構(gòu)造函數(shù) 派生類(lèi)本身需要構(gòu)造函數(shù) 在定義 派生類(lèi)對(duì)象時(shí) 其相應(yīng)的基類(lèi)對(duì)象需調(diào)用帶有參數(shù)的構(gòu)造函數(shù) 派生類(lèi)對(duì)象的初始化也是通過(guò)派生類(lèi)的構(gòu)造函數(shù)實(shí)現(xiàn)的 具體來(lái)說(shuō) 就是對(duì)該類(lèi)的數(shù)據(jù)成 員賦初值 派生類(lèi)析構(gòu)函數(shù)的功能與沒(méi)有繼承關(guān)系的類(lèi)中析構(gòu)函數(shù)的功能一樣 也是在對(duì)象消亡 之前進(jìn)行一些必要的清理工作 6 多繼承一般應(yīng)用在哪些場(chǎng)合 對(duì)于多重繼承 派生類(lèi)可以有多個(gè)直接基類(lèi) 這時(shí)的派生類(lèi)同時(shí)得到了多個(gè)已有類(lèi)的 特征 7 在類(lèi)的派生中為何引入虛基類(lèi) 在含有虛基類(lèi)的派生類(lèi)中 當(dāng)創(chuàng)建它的 對(duì)象時(shí) 構(gòu)造函數(shù)的執(zhí)行順序如何 當(dāng)在多條繼承路徑上有一個(gè)公共的基類(lèi) 在這些路徑中的某幾條路徑匯合處 這個(gè)公共的基類(lèi)就會(huì)產(chǎn)生多個(gè)實(shí)例 或多個(gè)副本 若想只保存這個(gè)基類(lèi)的一個(gè)實(shí)例 可以將這個(gè)公共基類(lèi)說(shuō)明為虛基類(lèi) 從基類(lèi)派生新類(lèi)時(shí) 使 用關(guān)鍵字 virtual 可以將基類(lèi)說(shuō)明成虛基類(lèi) 在多個(gè)基類(lèi)之間嚴(yán)格按照派生類(lèi)定義時(shí)從左到右的順序來(lái)排列先后 而析構(gòu)函數(shù)的調(diào)用順序剛好與構(gòu)造函數(shù)的相 反 如果基類(lèi)中有虛基類(lèi) 則構(gòu)造函數(shù)的調(diào)用順序采用下列規(guī)則 1 虛基類(lèi)的構(gòu)造函數(shù)在非虛基類(lèi)之前調(diào)用 2 若同一層次中包含多個(gè)虛基類(lèi) 這些虛基類(lèi)的構(gòu)造函數(shù)按照他們說(shuō)明的次序調(diào)用 3 若虛基類(lèi)由非虛基類(lèi)派生而來(lái) 則仍然先調(diào)用基類(lèi)構(gòu)造函數(shù) 再調(diào)用派生類(lèi)的構(gòu) 造函數(shù) 特別需要注意 當(dāng)一個(gè)派生類(lèi)同時(shí)有多個(gè)基類(lèi)時(shí) 對(duì)于所有需要給予參數(shù)進(jìn)行初始化 的基類(lèi) 都要顯式給出基類(lèi)名和參數(shù)表 對(duì)于使用默認(rèn)構(gòu)造函數(shù)的基類(lèi) 可以不給出類(lèi)名 同樣 對(duì)于對(duì)象成員 如果是使用默認(rèn)構(gòu)造函數(shù) 也不需要寫(xiě)出對(duì)象名和參數(shù)表 而對(duì)于 單繼承 就只需要寫(xiě)一個(gè)基類(lèi)名就可以了 8 設(shè)計(jì)一個(gè)大學(xué)的類(lèi)系統(tǒng) 學(xué)校中有學(xué)生 教師 職員 每種人員都有自 己的特性 他們之間又有相同的地方 利用繼承機(jī)制定義這個(gè)系統(tǒng)中的各個(gè)類(lèi) 及類(lèi)上必須的操作 參考程序 include include class Person protected char m strName 10 int m nSex int m nAge public Person char name int age char sex strcpy m strName name m nSex sex m 0 1 m nAge age void setName char name strcpy m strName name void setSex int sex m nSex sex m 0 1 void setAge int age m nAge age char getName return m strName int getAge return m nAge int getSex return m nSex void ShowMe cout 姓 名 m strName endl cout 性 別 m nSex 0 男 女 endl cout 年 齡 m nAge endl class Teacher public Person char m strDept 20 int m fSalary public Teacher char name int age char sex char dept int salary Person name age sex strcpy m strDept dept m fSalary salary void ShowMe Person ShowMe cout 工作單位 m strDept endl cout 月 薪 m fSalary endl void setSalary int salary m fSalary salary int getSalary return m fSalary class Student public Person char m strID 12 char m strClass 12 public Student char name int age char sex char ID char Class Person name age sex strcpy m strID ID strcpy m strClass Class void ShowMe cout 學(xué) 號(hào) m strID endl Person ShowMe cout 班 級(jí) m strClass n void setID char ID strcpy m strID ID void setClass char Class strcpy m strClass Class char getID return m strID char getClass return m strClass class Employee public Person int m fSalary public Employee char name int age char sex int salary Person name age sex m fSalary salary void setSalary int salary m fSalary salary int getSalary return m fSalary void ShowMe Person ShowMe cout 工 資 m fSalary n void main 定義三個(gè)不同類(lèi)的對(duì)象 Teacher teacher1 劉馨 38 m 計(jì)算機(jī)系 3800 Student std1 劉麗 20 f 03016003 計(jì)算機(jī) 03 Employee emPloyee1 張?chǎng)?25 f 1500 顯示各類(lèi)人員的屬性 teacher1 ShowMe cout endl std1 ShowMe cout endl emPloyee1 ShowMe 修改各類(lèi)人員的屬性 teacher1 setAge 40 teacher1 setSalary 4500 std1 setAge 21 emPloyee1 setAge 26 emPloyee1 setSalary 2000 cout endl cout 修改各類(lèi)人員的屬性后 endl teacher1 ShowMe cout endl std1 ShowMe cout endl emPloyee1 ShowMe 程序的執(zhí)行結(jié)果為 姓 名 劉馨 性 別 男 年 齡 38 工作單位 計(jì)算機(jī)系 月 薪 3800 學(xué) 號(hào) 03016003 姓 名 劉麗 性 別 女 年 齡 20 班 級(jí) 計(jì)算機(jī) 03 姓 名 張?chǎng)?性 別 女 年 齡 25 工 資 1500 修改各類(lèi)人員的屬性后 姓 名 劉馨 性 別 男 年 齡 40 工作單位 計(jì)算機(jī)系 月 薪 4500 學(xué) 號(hào) 03016003 姓 名 劉麗 性 別 女 年 齡 21 班 級(jí) 計(jì)算機(jī) 03 姓 名 張?chǎng)?性 別 女 年 齡 26 工 資 2000 9 假定車(chē)可分為貨車(chē)和客車(chē) 客車(chē)又可分為轎車(chē) 面包車(chē)和公共汽車(chē) 請(qǐng) 設(shè)計(jì)相應(yīng)的類(lèi)層次結(jié)構(gòu) 說(shuō)明 可以把轎車(chē) 面包車(chē)和公共汽車(chē)定義為客車(chē)類(lèi)的對(duì)象 參考程序 include using namespace std class vehicle 定義基類(lèi) vehicle public 公有函數(shù)成員 vehicle int in wheels float in weight 給數(shù)據(jù)成員初始化 int get wheels 獲取車(chē)輪數(shù) float get weight 獲取汽車(chē)重量 void setWeels int wls void setWeight float wt void display cout 車(chē)輪數(shù) wheels 汽車(chē)重量 weight endl private 私有數(shù)據(jù)成員 int wheels 車(chē)輪數(shù) float weight 表示汽車(chē)承重 vehicle vehicle int in wheels float in weight wheels in wheels weight in weight float vehicle get weight return weight int vehicle get wheels return wheels void vehicle setWeels int wls wheels wls void vehicle setWeight float wt weight wt class truck public vehicle 定義貨車(chē)類(lèi) truck private 新增私有數(shù)據(jù)成員 float weight load 承重 public 新增公有成員函數(shù) truck int wheel float wt float wl vehicle wheel wt weight load wl float getLoads return weight load void display vehicle display cout 汽車(chē)承重 weight load endl 車(chē)和客車(chē) 客車(chē)又可分為轎車(chē) 面包車(chē)和公共汽車(chē) class car public vehicle 定義客車(chē)類(lèi) car int passenger load 新增私有數(shù)據(jù)成員 表示載客數(shù) public 新增公有成員函數(shù) car int in wheels float in weight int people 4 vehicle in wheels in weight passenger load people int getPassengers return passenger load void setPassengers int people passenger load people void display vehicle display cout 載客數(shù) passenger load endl void main truck truck1 8 400 100000 貨車(chē) car car1 4 20 客車(chē) car saloon car 4 10 5 轎車(chē) car microbus 6 10 18 面包車(chē) car bus 6 20 30 公共汽車(chē) 顯示相關(guān)信息 truck1 display cout endl car1 display cout endl saloon car display cout endl microbus display cout endl bus display 程序的運(yùn)行結(jié)果 車(chē)輪數(shù) 8 汽車(chē)重量 400 汽車(chē)承重 100000 車(chē)輪數(shù) 4 汽車(chē)重量 20 載客數(shù) 4 車(chē)輪數(shù) 4 汽車(chē)重量 10 載客數(shù) 5 車(chē)輪數(shù) 6 汽車(chē)重量 10 載客數(shù) 18 車(chē)輪數(shù) 6 汽車(chē)重量 20 載客數(shù) 30 10 設(shè)計(jì)一個(gè)能細(xì)分為矩形 三角形 圓形和橢圓形的 圖形 類(lèi) 使用繼 承將這些圖形分類(lèi) 找出能作為基類(lèi)部分的共同特征 如寬 高 中心點(diǎn)等 和方法 如初始化 求面積等 并看看這些圖形是否能進(jìn)一步劃分為子類(lèi) 參考程序 include using namespace std class Figure 定義基類(lèi)圖形類(lèi) public 公有函數(shù)成員 Figure int wid width wid float area int getWidth return width private 私有數(shù)據(jù)成員 int width 寬度或半徑 class Rectangle public Figure 定義矩形類(lèi) int height public Rectangle int wid int hei Figure wid height hei float area return getWidth height class Triangle public Figure 定義三角形類(lèi) int height public Triangle int wid int hei Figure wid height hei float area return 1 0 2 getWidth height class Circle public Figure 定義圓類(lèi) public Circle int wid Figure wid float area return 3 14 getWidth getWidth void main Rectangle rect 5 4 Triangle tri 5 4 Circle cir 5 cout 矩形的面積是 rect area endl 三角形的面積是 tri area endl 圓的面積是 cir area endl 程序的運(yùn)行結(jié)果為 矩形的面積是 20 三角形的面積是 10 圓的面積是 78 5 11 考慮大學(xué)的學(xué)生情況 試?yán)脝卫^承來(lái)實(shí)現(xiàn)學(xué)生和畢業(yè)生兩個(gè)類(lèi) 設(shè)計(jì) 相關(guān)的數(shù)據(jù)成員及函數(shù) 編程對(duì)繼承情況進(jìn)行測(cè)試 參考程序 include include class Student 定義基類(lèi) vehicle public 公有函數(shù)成員 Student int n char na int g number n grade g strcpy name na int getNumber return number char getName return name int getGrade return grade void display cout 學(xué)號(hào) number endl 姓名 name endl 年級(jí) grade endl private 私有數(shù)據(jù)成員 int number 學(xué)號(hào) char name 20 姓名 int grade 年級(jí) class Graduate public Student 定義畢業(yè)生類(lèi) char designSubject 20 public Graduate int n char na char deSub int g 4 Student n na g strcpy designSubject deSub void display Student display cout 設(shè)計(jì)題目 designSubject endl void main 創(chuàng)建對(duì)象 Student li 2 Li Ming 3 Graduate zhang 3 Zhang Gang 學(xué)生成績(jī)管理系統(tǒng) 顯示對(duì)象的相關(guān)信息 li display cout endl endl zhang display 程序的運(yùn)行結(jié)果 學(xué)號(hào) 2 姓名 Li Ming 年級(jí) 3 學(xué)號(hào) 3 姓名 Zhang Gang 年級(jí) 4 設(shè)計(jì)題目 學(xué)生成績(jī)管理系統(tǒng) 12 定義一個(gè)哺乳動(dòng)物類(lèi) 再由此派生出人類(lèi) 狗類(lèi)和貓類(lèi) 這些類(lèi)中均有 speak 函數(shù) 觀察在調(diào)用過(guò)程中 到底使用了誰(shuí)的 speak 函數(shù) 參考程序 include include class Animal float weight public void speak void setWeight float wt weight wt float getWeight return weight class Human public Animal public void speak cout 說(shuō)話 endl class Cat public Animal public void speak cout 喵喵 endl class Dog public Animal public void speak cout 汪汪 endl void main 定義三個(gè)對(duì)象 Human hm Cat cat Dog dog 調(diào)用不同類(lèi)的 speak 函數(shù) cout 人 hm speak cout 貓 cat speak cout 狗 dog speak 程序的運(yùn)行結(jié)果 人 說(shuō)話 貓 喵喵 狗 汪汪 13 通過(guò)多重繼承定義研究生類(lèi) 研究生既有學(xué)生的屬性 又有教師的屬性 參考程序 include include class Person protected char m strName 10 int m nSex int m nAge public Person char name int age char sex strcpy m strName name m nSex sex m 0 1 m nAge age void setName char name strcpy m strName name void setSex int sex m nSex sex m 0 1 void setAge int age m nAge age char getName return m strName int getAge return m nAge int getSex return m nSex void ShowMe cout 姓 名 m strName endl cout 性 別 m nSex 0 男 女 endl cout 年 齡 m nAge endl class Teacher public Person char m strDept 20 int m fSalary public Teacher char name int age char sex char dept int salary Person name age sex strcpy m strDept dept m fSalary salary void ShowMe Person ShowMe cout 工作單位 m strDept endl cout 月 薪 m fSalary endl void setSalary int salary m fSalary salary char getDept return m strDept int getSalary return m fSalary class Student public Person char m strID 12 char m strClass 12 public Student char name int age char sex char ID char Class Person name age sex strcpy m strID ID strcpy m strClass Class void ShowMe cout 學(xué) 號(hào) m strID endl Person ShowMe cout 班 級(jí) m strClass n void setID char ID strcpy m strID ID void setClass char Class strcpy m strClass Class char getID return m strID char getClass return m strClass class Master public Student public Teacher public Master char name int age char sex char ID char Class char dept int salary Student name age sex ID Class Teacher name age sex dept salary void ShowMe Student ShowMe cout 工作單位 getDept endl cout 月 薪 getSalary endl void main 定義三個(gè)不同類(lèi)的對(duì)象 Teacher teacher1 劉馨 38 m 計(jì)算機(jī)系 3800 Student std1 劉麗 20 f 03016003 計(jì)算機(jī) 03 Master master 張?chǎng)?25 f 003 機(jī)械 052 機(jī)械系 1000 顯示各類(lèi)人員的屬性 teacher1 ShowMe cout endl std1 ShowMe cout include include class String char name 256 public String char str strcpy name str String String String operator const String String operator const String bool operator const String bool operator const String bool operator const String bool operator const String bool operator const String void display cout The string is name const String else return false bool String operator const String else return false bool String operator const String else cout demo1 demo2 endl if demo1 demo2 cout demo1 demo2 endl else cout demo1 demo2 endl if demo3 demo4 cout demo3 demo4 endl else cout demo3 demo4 demo2 demo1 demo2 demo3 demo4 4 現(xiàn)有一個(gè)學(xué)校管理系統(tǒng) 在其中包含的處理信息有三方面 即教師 學(xué)生和職工 利用一個(gè)菜單來(lái)實(shí)現(xiàn)對(duì)它們的操作 要求使用虛函數(shù) include include include class person friend class list protected char name 20 int age char add 40 char tele 15 static person ptr person next public person char int char char virtual void print virtual void insert class student public person friend class list int level float grade point average public student char int char char int float void print void insert class teacher public person friend class list float salary public teacher char int char char float void print void insert class staff public person friend class list float hourly wages public staff char int char char float void print void insert class list person root public list root 0 void insert person person node void remove char name void print list person person char name int age char add char tele strcpy person name name strcpy person add add strcpy person tele tele person age age next 0 void person print cout nname name n cout age add n cout address add n cout telephone number tele n student student char name int age char add char tele int level float grade point average person name age add tele student level level student grade point average grade point

注意事項(xiàng)

本文(Visual-C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程與實(shí)驗(yàn)(第二版)清華大學(xué)出版社1—8章答案)為本站會(huì)員(gbs****77)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!