出版時(shí)間:2012-6 出版社:電子工業(yè)出版社 作者:薩特 頁(yè)數(shù):255 字?jǐn)?shù):289000 譯者:聶雪軍
Tag標(biāo)簽:無(wú)
內(nèi)容概要
《exceptional
c++:47個(gè)c++工程難題、編程問題和解決方案(中文版)》講述如何用標(biāo)準(zhǔn)c++進(jìn)行企業(yè)級(jí)的軟件開發(fā),通過“問題/解答”的方式,啟發(fā)讀者思考,幫助了解隱藏在問題背后的設(shè)計(jì)思想,以及各種編程指導(dǎo)原則適用的場(chǎng)合。本書列出的條款涵蓋了許多方面的主題,尤其對(duì)異常安全性、類和模塊的合理設(shè)計(jì),正確的代碼優(yōu)化,以及編寫符合c++標(biāo)準(zhǔn)的可移植代碼進(jìn)行了深入的討論。
《exceptional c++:47個(gè)c++工程難題、編程問題和解決方案(中文版)》適于有一定c++編程基礎(chǔ)的讀者閱讀。
作者簡(jiǎn)介
作者:(美國(guó))薩特(Sutter H.) 譯者:聶雪軍
書籍目錄
1 泛型程序設(shè)計(jì)與c++標(biāo)準(zhǔn)庫(kù)
條款1:迭代器難度系數(shù)
條款2:大小寫不敏感的字符串——之一
條款3:大小寫不敏感的字符串——之二
條款4:可重用性最高的泛型容器——之一
條款5:可重用性最高的泛型容器——之二
條款6:臨時(shí)對(duì)象
條款7:標(biāo)準(zhǔn)庫(kù)的使用(或者,再論臨時(shí)對(duì)象)
2 異常安全性相關(guān)的問題與技術(shù)
條款8:編寫異常安全的代碼——之一
條款9:編寫異常安全的代碼——之二
條款10:編寫異常安全的代碼——之三
條款11:編寫異常安全的代碼——之四
條款12:編寫異常安全的代碼——之五
條款13:編寫異常安全的代碼——之六
條款14:編寫異常安全的代碼——之七
條款15:編寫異常安全的代碼——之八
條款16:編寫異常安全的代碼——之九
條款17:編寫異常安全的代碼——之十
條款18:代碼的復(fù)雜性——之一
條款19:代碼的復(fù)雜性——之二
3 類的設(shè)計(jì)與繼承
條款20:類的編寫技巧
條款21:虛函數(shù)的重載
條款22:類之間的關(guān)系——之一
條款23:類之間的關(guān)系——之二
條款24:繼承的使用和濫用
條款25:面向?qū)ο蟪绦蛟O(shè)計(jì)
4 編譯器防火墻和pimpl慣用法
條款26:將編譯期依賴性降到最低——之一
條款27:將編譯期依賴性降到最低——之二
條款28:將編譯期依賴性降到最低——之三
條款29:編譯防火墻
條款30:fast pimpl慣用法
5 名字查找、名字空間和接口規(guī)則
條款31:名字查找與接口規(guī)則——之一
條款32:名字查找與接口規(guī)則——之二
條款33:名字查找和接口規(guī)則——之三
條款34:名字查找與接口規(guī)則——之四
6 內(nèi)存管理
條款35:內(nèi)存管理——之一
條款36:內(nèi)存管理——之二
條款37:auto_ptr
7 誤區(qū)、陷阱以及錯(cuò)誤的慣用法
條款38:對(duì)象標(biāo)識(shí)
條款39:自動(dòng)轉(zhuǎn)換
條款40:對(duì)象的生存期——之一
條款41:對(duì)象的生存期——之二
8 其他主題
條款42:變量的初始化
條款43:正確使用const
條款44:類型轉(zhuǎn)換
條款45:bool
條款46:轉(zhuǎn)調(diào)函數(shù)
條款47:控制流程
后記
參考書目
章節(jié)摘錄
版權(quán)頁(yè): 從Gury of the Week條款8的最初發(fā)布到現(xiàn)在,這一系列的條款已經(jīng)走過了很長(zhǎng)的一段路程。我希望你能喜歡它們并且發(fā)現(xiàn)它們確實(shí)很有用。我要特別感謝委員會(huì)成員Dave Abrahams和Greg Colvin,感謝他們?cè)陉U述異常安全性上的深刻洞察力,以及對(duì)這部分內(nèi)容的草稿所提出的中肯批評(píng)。Dave和Grep,以及Matt Austern,他們一起編寫了兩個(gè)完整的會(huì)議提案,這些提案的議題是將當(dāng)前的異常安全性保證添加到標(biāo)準(zhǔn)庫(kù)中。 在這個(gè)系列的條款中,我們將討論兩個(gè)主題:首先是C++的兩個(gè)主要特性,異常處理和模板,我們將分析如何編寫異常安全的代碼(即在出現(xiàn)異常的情況下代碼仍能正確運(yùn)行);其次是異常中立(即將所有的異常都轉(zhuǎn)發(fā)給調(diào)用者)的泛型容器。這些東西說(shuō)起來(lái)很容易,但做起來(lái)絕不輕松。 現(xiàn)在,我們一起來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的容器(一個(gè)能執(zhí)行壓入操作和彈出操作的棧),并分析如果要使這個(gè)容器成為異常安全的和異常中立的,我們需要解決哪些問題。 我們將從Cargill停下來(lái)的地方開始——也就是,逐步地創(chuàng)建一個(gè)異常安全的模板stack,而cargill當(dāng)初也正是以Stack為例來(lái)提出他的問題的。稍后,我們將降低對(duì)模板參數(shù)類型T的需求,顯著改善Stack容器,然后還將給出一些高級(jí)技巧,用于在管理資源時(shí)實(shí)現(xiàn)異常安全性。按照這種方法,我們可以找出下列問題的答案: 異常安全性的不同“級(jí)別”指的是什么? 泛型容器可以是或者說(shuō)應(yīng)該是完全異常中立的嗎? 標(biāo)準(zhǔn)庫(kù)中的容器類是異常安全的還是異常中立的? 異常安全性會(huì)不會(huì)影響對(duì)容器公共接口的設(shè)計(jì)? 在泛型容器中應(yīng)該使用異常規(guī)范嗎? 這個(gè)構(gòu)造函數(shù)是異常安全的和異常中立的嗎?要搞清楚這個(gè)問題,我們先考慮在哪些地方將可能拋出異常。簡(jiǎn)單來(lái)說(shuō),答案就是:在每個(gè)函數(shù)中。因此,第一步就是對(duì)上述代碼進(jìn)行分析并確定實(shí)際調(diào)用了哪些函數(shù),包括自由函數(shù)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、運(yùn)算符重載函數(shù),以及其他的成員函數(shù)。 在Stack的構(gòu)造函數(shù)中,首先將vsize_設(shè)為10,然后通過new T(vsize_)來(lái)分配初始內(nèi)存。后者將首先調(diào)用operator new()()(或者是默認(rèn)的operator new(),或者是由T提供的operator new())來(lái)分配內(nèi)存,然后再調(diào)用vsize_次T::T函數(shù)。在這個(gè)過程中有兩個(gè)操作可能會(huì)失敗。第一個(gè)操作是內(nèi)存分配操作本身,在失敗的情況下。perator new()()將拋出一個(gè)bad alloc異常。第二個(gè)操作是T的默認(rèn)構(gòu)造函數(shù),在這個(gè)函數(shù)中可能拋出任意的異常,在這種情況下,所有已經(jīng)構(gòu)造的T對(duì)象都會(huì)被銷毀,并且通過調(diào)用。perator delete()()來(lái)確保已分配的內(nèi)存被自動(dòng)回收。 因此,上面的函數(shù)是完全異常安全的和異常中立的,我們繼續(xù)來(lái)看下一個(gè)問題……什么?你問為什么這個(gè)函數(shù)是健壯的?好吧,我們對(duì)這個(gè)函數(shù)進(jìn)行更為詳細(xì)的討論。 1.這個(gè)函數(shù)是異常中立的。在函數(shù)中不會(huì)捕獲任何異常,因此,如果new拋出了異常,那么這個(gè)異常就會(huì)像我們所要求的那樣被正確地轉(zhuǎn)發(fā)給調(diào)用者。
編輯推薦
《Exceptional C++:47個(gè)C++工程難題、編程問題和解決方案(中文版)》中的每個(gè)問題都給出了難度系數(shù),在這些問題中闡釋一些微妙的編程錯(cuò)洪以及程序設(shè)計(jì)上的考慮。在閱瀆書中給出的解答之前,你可以先嘗試自己進(jìn)行解答?!禘xceptional C++:47個(gè)C++工程難題、編程問題和解決方案(中文版)》將對(duì)這些問題進(jìn)行洋細(xì)的分析,并指出哪些地方是錯(cuò)誤的,以及如何改正這個(gè)問題。
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載