本書在一開始就向我們講解了如何為我們的設(shè)計(jì)選擇正確的抽象,提示我們注意抽象和現(xiàn)實(shí)之間的區(qū)別。然后,我們就將學(xué)到如何將已得到的抽象轉(zhuǎn)化成一個(或多個)C++中的類,期間進(jìn)行的討論所涵蓋的范圍上至高層的設(shè)計(jì)策略,下至底層的接口和實(shí)現(xiàn)細(xì)節(jié)。
接下來本書對單繼承和多重繼承進(jìn)行了深入的探索。一開始書中會給出一個關(guān)于它們應(yīng)該用在設(shè)計(jì)的什么地方的討論,然后就是一些詳細(xì)的示例代碼,用來向我們演示如何在實(shí)踐中使用這些概念。對于
Robert B.Murray在撰寫該書時是量子數(shù)據(jù)系統(tǒng)公司(Quantitative Data Systems)中負(fù)責(zé)軟件工程的副總裁,該公司的業(yè)務(wù)包括向財(cái)富500強(qiáng)(Fortune 500)中的公司提供面向?qū)ο蟮能浖鉀Q方案。在此之前,他曾經(jīng)在AT & T的Bell實(shí)驗(yàn)室工作,在那里他參與了C++語言、編譯器以及庫的開發(fā)。他同時也是《The C++ Report》雜志的創(chuàng)立編輯(founding editor),主持Obfuscated C++專欄。從1987年起,他就開始在學(xué)術(shù)會議和專業(yè)會議上向人教授C++語言。目前Murray在FNIS公司進(jìn)行著軟件開發(fā)的管理,他的興趣主要包括:程序語言的開發(fā)和工具,以及輕量級的開發(fā)過程(如極限編程)。
【目錄】
目 錄 代譯者序 序
第0章 簡介 0. 1 關(guān)于示例代碼 0. 2 本書的組織 0. 3 問題 0. 4 語言規(guī)則
第1章 抽象 1. 1 有關(guān)電話號碼的抽象模型 1. 2 抽象模型間的關(guān)系 1. 3 請考慮邊界條件 1. 4 使用CRC卡片來輔助設(shè)計(jì) 1. 5 小結(jié) 1. 6 問題
第2章 類 2. 1 構(gòu)造函數(shù) 2. 2 賦值 2. 3 公用數(shù)據(jù) 2. 4 隱式類型轉(zhuǎn)換 2. 5 操作符重載:成員或非成員 2. 6 重載. 缺省值以及省略符 2. 7 Const 2. 8 返回值為引用 2. 9 靜態(tài)對象的構(gòu)造 2. 10 小結(jié) 2. 11 問題
第3章 句柄 3. 1 一個String類 3. 2 使用計(jì)數(shù)器來避免多份拷貝 3. 3 避免進(jìn)行重編譯:Cheshire Cat 3. 4 使用句柄來隱藏設(shè)計(jì) 3. 5 多種實(shí)現(xiàn) 3. 6 作為對象的句柄 3. 7 綜述 3. 8 小結(jié) 3. 9 問題
第4章 繼承 4. 1 is-a關(guān)系 4. 2 公有繼承 4. 3 私有繼承 4. 4 保護(hù)型繼承 4. 5 與基類抽象的一致性 4. 6 純虛函數(shù) 4. 7 有關(guān)繼承的細(xì)節(jié)和陷阱 4. 8 小結(jié) 4. 9 問題
第5章 多重繼承 5. 1 作為交集的多重繼承 5. 2 虛基類 5. 3 一些有關(guān)多重繼承的細(xì)節(jié)問題 5. 4 小結(jié) 5. 5 問題
第6章 考慮繼承的設(shè)計(jì) 6. 1 被保護(hù)的接口 6. 2 我們的設(shè)計(jì)是否應(yīng)該考慮到繼承 6. 3 一些為繼承所做的設(shè)計(jì)的例子 6. 4 結(jié)論 6. 5 小結(jié) 6. 6 問題
第7章 模板 7. 1 模板類Pair 7. 2 一些有關(guān)模板的細(xì)節(jié) 7. 3 模板的實(shí)例化 7. 4 智能指針 7. 5 作為模板參數(shù)的表達(dá)式 7. 6 模板函數(shù) 7. 7 小結(jié) 7. 8 問題
第8章 模板的高級用法 8. 1 使用了模板的容器類 8. 2 示例:Block 8. 3 有關(guān)Block的設(shè)計(jì)細(xì)節(jié) 8. 4 帶有迭代器的容器:List 8. 5 迭代器的設(shè)計(jì)細(xì)節(jié) 8. 6 性能上的考慮 8. 7 對模板參數(shù)的限制 8. 8 模板特化 8. 9 小結(jié) 8. 10 問題
第9章 重用 9. 1 發(fā)現(xiàn)和獲得 9. 2 健壯性 9. 3 內(nèi)存管理 9. 4 可選的內(nèi)存分配方案 9. 5 傳遞參數(shù)給operatornew 9. 6 管理外部資源 9. 7 尋找有關(guān)內(nèi)存的bug 9. 8 名字沖突 9. 9 性能 9. 10 不要去猜想, 而應(yīng)該度量! 9. 11 算法 9. 12 動態(tài)內(nèi)存分配中的瓶頸 9. 13 內(nèi)嵌 9. 14 Tiemann法則 9. 15 小結(jié) 9. 16 問題
第10章 異常 10. 1 一個負(fù)面的聲明 10. 2 為什么需要異常 10. 3 一個異常的例子 10. 4 異常只應(yīng)該用來表述異常情況 10. 5 理解異常 10. 6 責(zé)任評估 10. 7 設(shè)計(jì)異常對象 10. 8 小結(jié) 10. 9 問題
第11章 向C 移植 11. 1 選擇使用C 11. 2 采用C 11. 3 設(shè)計(jì)和實(shí)現(xiàn) 11. 4 開發(fā)一個堅(jiān)實(shí)的基礎(chǔ) 11. 5 相關(guān)的思考 11. 6 小結(jié) 11. 7 問題