深度探索C 物件模型

2021-06-03 19:57:10 字數 2256 閱讀 5849

傳世經典書叢

深度探索c++物件模型

[美]stanley b. lippman (斯坦利·b.·李普曼) 著

侯捷 譯

isbn978-7-121-14952-8

2023年1月出版

定價:69.00元

16開

356頁

宣傳語:如果你是一位c++程式設計師,渴望對於底層知識獲得乙個完整的了解,那麼本書正適合你

內 容 簡 介

作者lippman參與設計了全世界第一套c++編譯程式cfront,這本書就是一位偉大的c++編譯程式設計者向你闡述他如何處理各種explicit(明確出現於c++程式**中)和implicit(隱藏於程式**背後)的c++語意。

本書專注於c++物件導向程式設計的底層機制,包括結構式語意、臨時性物件的生成、封裝、繼承,以及虛擬——虛函式和虛擬繼承。這本書讓你知道:一旦你能夠了解底層實現模型,你的程式**將獲得多麼大的效率。lippman澄清了那些關於c++額外負荷與複雜度的各種錯誤資訊和迷思,但也指出其中某些成本和利益交換確實存在。他闡述了各式各樣的實現模型,指出它們的進化之道及其本質因素。書中涵蓋了c++物件模型的語意暗示,並指出這個模型是如何影響你的程式的。

對於c++底層機制感興趣的讀者,這必然是一本讓你大呼過癮的絕妙好書。

譯 序

本立道生        

對於傳統的結構化(sequential)語言,我們向來沒有太多的疑惑,雖然在函式呼叫的背後,也有著堆疊建制、引數排列、返回位址、堆疊清除等等幕後機制,但函式呼叫是那麼的自然而明顯,好像只是夾帶著乙個包裹,從程式的某乙個地點跳到另乙個地點去執行。

但是對於物件導向(object oriented)語言,我們的疑惑就多了。究其因,這種語言的編譯器為我們(程式設計師)做了太多的服務:建構函式、析構函式、虛函式、繼承、多型……有時候它為我們合成出一些額外的函式(或運算子),有時候它又擴張我們所寫的函式內容,放進更多的操作。有時候它還會為我們的objects加油添醋,放進一些奇妙的東西,使你面對sizeof的結果大驚失色。

我心裡頭一直有個疑惑:電腦程式最基礎的形式,總是脫離不了一行一行的循序執行模式,為什麼oo(物件導向)語言卻能夠「自動完成」這麼多事情呢?另乙個疑惑是,威力強大的polymorphism(多型),其底層機制究竟如何?

如果不了解編譯器對我們所寫的c++**做了什麼手腳,這些困惑永遠解不開。

這本書解決了過去令我百思不解的諸多疑惑。我要向所有已具備c++多年程式設計經驗的同好們大力推薦這本書。

這本書同時也是躍向元件軟體(component-ware)基本精神的「跳板」。不管你想學習com(component object model)、corba(common objectrequest broker architecture)或是som(system object model),了解c++ objectmodel,將使你更清楚軟體元件(components)設計上的難點與運用之道。不但我自己在學習com的道路上有此強烈的感受,essentialcom(《com本質論》,侯捷譯,碁峰1998)的作者don box也在他的書中推崇lippman的這一本卓越的書籍。

是的,這當然不會是一本輕鬆的書籍。某些章節(例如3、4兩章)可能給你立即的享受——享受於面對底層機制有所體會與掌控的快樂;某些章節(例如5、6、7三章)可能帶給你短暫的痛苦——痛苦於艱難深澀、難以吞嚥的內容。這些快樂與痛苦,其實就是我翻譯此書時的心情寫照。無論如何,我希望通過我的譯筆,把這本難得的好書帶到更多人面前,引領大家見識c++底層建設的技術之美。

侯捷 2011.10.20  於新竹

[email protected]

請注意:原文本有大大小小約80~90個筆誤。有的無傷大雅,有的影響閱讀順暢甚巨(如前後文所用符號不一致、內文與圖形所用符號不一致——甚至因而導致的文字解釋不正確)。我已在第0章(譯者的話)列出所有我找到的錯誤。此外,某些場合我還會在錯誤出現之處再加註,表示原文內容為何。這麼做不是畫蛇添足,也不為彰顯什麼。我知道有些讀者拿著原文書和中譯書對照著看,我把原書錯誤加註出來,可免讀者懷疑是否我打錯字或是譯錯了。另一方面也是為了文責自負……唔……萬一lippman是對的而j.j.hou錯了呢?!我雖有相當把握,但還是希望明白攤開來讓讀者檢驗。

深度探索C 物件模型

傳世經典書叢 深度探索c 物件模型 美 stanley b.lippman 斯坦利 b.李普曼 著 侯捷譯 isbn978 7 121 14952 8 2012年1月出版 定價 69.00元 16開 356頁 宣傳語 如果你是一位c 程式設計師,渴望對於底層知識獲得乙個完整的了解,那麼本書正適合你 ...

深度探索C 物件模型

深度探索c 物件模型 本書目錄結構如下 第1章 關於物件 object lessons 加上封裝後的布局成本 layout costs for adding encapsulation 1.1 c 模式模式 the c object model 簡單物件模型 a object model 驅動物件模...

深度探索C 物件模型 關於物件

類成員 物件模型 struct和class在定義類物件的想相同的,均可以定義private public protected,但是如果要用於模板類或模板函式,只能用class struct能保證資料成員的空間布局,而class則不一定。c 支援多型的方法 class shape class circ...