《深度探索C++對象模型》

深度探索C++對象模型 特色及評論

Inside The C++ Object Model專注於C++對象導向程式設計的底層機制,包括結構式語意、暫時性對象的生成、封裝、繼承,以及虛擬――虛擬函式和虛擬繼承。這本書讓你知道:一旦你能夠了解底層實現模型,你的程式代碼將獲得多么大的效率。Lippman澄清了那些關於C++額外負荷與複雜度的各種錯誤信息和迷思,但也指出其中某些成本和利益交換確實存在。他闡述了各式各樣的實現模型,指出它們的進化之道及其本質因素。本書涵蓋了C++對象模型的語意暗示,並指出這個模型是如何影響你的程式的。本書重點:探索“對象導向程式所支持的C++對象模型”下的程式行為。對於“對象導向性質之基礎實現技術”以及“各種性質背後的隱含利益交換”提供一個清楚的認識。檢驗由程式變形所帶來的效率衝擊。提供豐富的程式範例、圖片,以及對象導向觀念和底層對象模型之間的效率測量。C++成山似海的書籍堆中,這一本不是嬰幼兒奶粉,也不是較大嬰兒奶粉,它是成人專用的低脂高鈣特殊奶粉。對於C++底層機制感興趣的讀者,這本書會給你“漫捲詩書喜欲狂”的感覺。了解C++ Object Model,是學習Component Object Model的最短路線。如果你是一位C++程式設計師,渴望對於底層知識獲得一個完整的了解,那么Inside The C++ Object Model正適合你。

深度探索C++對象模型 內容簡介

insidetheC objectmodel專注於C 對象導向程式設計的底層機制,包括結構式語意,暫時性對象的生成,封裝,繼承,以及虛擬――虛擬函式和虛擬繼承。這本書將會告訴您,一但您能夠了解底層實現模型,你的程式代碼將獲得多么大的效率。本書涵蓋了C 對象模型的語意暗示,並指出這個模型是如何影響你的程式的。

深度探索C++對象模型 本書前言

前言 差不多有10年之久,我在貝爾實驗室(Bell Laboratories)埋首於C++的實現任務。最初的工作是在cfront上面(Bjarne Stroustrup的第一個C++編譯器),從1986年的1.1版到1991年9月的3.0版,然後移轉到Simplifier(這是我們內部的命名),也就是Found~ion項目中的C++對象模型部分。在Simplifier設計期間,我開始醞釀這本書。 Foundation項目是什麼?在Bjarne的領導下,貝爾實驗室中的一個小組探索著以C++完成大規模程式設計時的種種問題的解決之道。Foundation項目是我們為了構造大系統而努力定義的一個新的開發模型;我們只使用C++,並不提供多重語言的解決方案。這是個令人興奮的工作,一方面是因為工作本身,一方面是因為工作夥伴:Bjarne、Andy Koenig、Rob Murray、Martin Carroll、Judy Ward、Steve Buroff、Peter Juhl,以及我自己。Barbara Moo管理我們這一群人(Bjarne和Andy除外)。Barbara Moo常說管理一個軟體團隊,就像放牧一群驕傲的貓。 我們把Foundation想像成一個核心,在那上面,其它人可以為使用者鋪設一層真正的開發環境,把它整修為他們所期望的UNIX或Smalltalk模型。私底下我們把它稱為Grail(傳說中耶穌最後的晚餐所用的聖杯),人人都想要,但是從來沒人找到過! Grail使用一個由Rob Murray發展出來並命名為ALF的面向對象層次結構,提供一個永久的、以語意為基礎的表現法。在Grail中,傳統編譯器被分解為數個各自分離的執行檔。parser負責建立程式的ALF表現法。其它每一個組件(比如type checking、simplification,code generation)以及工具(比如browser)都在程式的一個ALF表現體上操作(並可能加以擴展)。Simplifier是編譯器的一部分,處於typechecking和codegeneration之間。Simplifier這個名稱是由Bjarne所倡議的,它原本是cfront的一個階段(phase)。 在type checking和code generation之間,Simplifier做什麼事呢?它用來轉換內部的程式表現。有三種轉換風味是任何對象模型都需要的: 1.與編譯器息息相關的轉換(Implementation,dependent transformations) 這是與特定編譯器有關的轉換。在ALF之下,這意味著我們所謂的“tentative”nodes。例如,當parser看到這個表達式: fct(); 它並不知道是否(a)這是一個函式調用操作,或者(b)這是overloaded call operator在class object fct上的一種套用。默認情況下,這個式子所代表的是一個函式調用,但是當(b)的情況出現時,Simplifier就要重寫並調換call subtree。 2.語言語意轉換(Language semantics transformations) 這包括constructor/destructor的合成和擴展、memberwise初始化、對於memberwise copy的支持、在程式�碼中安插conversion operators、臨時性對象,以及對constructor/destructor的調用。 3.程式代碼和對象模型的轉換(Code and object model transformations) 這包括對virtual functions、virtual Base class和inheritance的一般支持、new和delete運算符、class objects所組成的數組、local static class instances、帶有非常量表達式(nonconstant expression)之global object的靜態初始化操作。我對Simplifier所規劃的一個目標是:提供一個對象模型體系,在其中,對象的實現是一個虛擬接口,支持各種對象模型。 最後兩種類型的轉換構成了本書的基礎。這意味著本書是為編譯器設計者而寫的嗎?不是,絕對不是!這本書是由一位編譯器設計者針對中高級C++程式設計師所寫的。隱藏在這本書背後的假設是,程式設計師如果了解C++對象模型,就可以寫出比較沒有錯誤傾向而且比較有效率的代碼。

深度探索C++對象模型 本書目錄

第一章關於對象
第二章構造函式語意學
第三章DATA語意學
第四章FUNCTION語意學
第五章構造、解構、拷貝語意學
第六章執行期語意學
第七章站在對象模型的尖端

深度探索C++對象模型 作者介紹

關於作者:Stanley Lippman目前是華特迪斯尼主題動畫公司(Walt Disney Feature Animation)的主要軟體工程師。他曾經在AT&T貝爾實驗室領導cfront 3.0和2.1版的編譯器開發小組。他也是貝爾實驗室中由Bjame Stroustrup所領導的Foundation特偵組中的一員,負責對象模型並研究C++程式開發環境。Stan著有極為成功的C++ Primer一書,也發表過許多C++方面的論文。Stan最近剛從C++ Report的編輯位置上“退隱”,他曾在那個位置上做了4年。他的C++論述遍及全球。關於譯者:侯捷,海峽兩岸著名的電腦技術自由作家,對於技術的鑽研和發表,有獨特的品性與堅持。作品涵蓋著、譯、評三方面,散見於各種刊特、媒體、網站論壇,深受讀者喜愛和尊敬。 同作者出版的其它圖書 ・Essential C++中文版

相關詞條

相關搜尋

熱門詞條

聯絡我們