
c++代碼設計與重用
一切事物都将得到檢驗并是以被稱為問題。
edith hamilton
這本書的主要目的在于:展示如何以c++程式設計語言編寫可重用代碼—就是說,根據不同的需要,在不經過修改,或者經過很少修改的前提下,可重用代碼可以很容易地應用到5個、50個甚至500個程式當中,而且這些程式往往是不同程式員編寫的,可能運作在不同的系統上。在整個闡述的過程中,我們的目的并不在于争論是否所有的代碼都是可重用的,也不在于說明可重用代碼能夠解決所有的程式問題。顯然,不論是對程式員而言,還是對可重用代碼本身而言,提高代碼的重用性都是需要代價的;通常隻有當我們有理由相信所給代碼在将來有可能會被重用時,我們才會付出這些重用的代價。是以,本書的目的在于詳細分析重用性的這些代價,于是當你面對是否編寫可重用代碼的選擇時,可以從容地做出明智的決定。
關于本書
本書主要面向的讀者是:那些希望從書中包含的許多深層c++程式設計見解中受益的讀者,或者是那些需要或希望學習如何編寫可重用代碼的讀者。在論述過程中,我們假設讀者已經知道如何編寫正确的c++代碼。
c++語言至今還沒有經過标準化(譯注:本書寫作于1995年,c++于1997年标準化),任意兩個不同的編譯器實作支援的語言幾乎都是不同(稍微不同或者相差很大)的。當我編寫這本書的時候,并沒有一個編譯器實作可以完全支援ansi/iso c++标準中最終定義的整個語言特性;而且,就算對同類型的編譯器而言,前後版本實作的語言特性也不盡相同。于是,編寫一本對所有編譯器都适用的書是很困難的,或者是不可能的。是以,當我們讨論或使用一些不能被主流c++編譯器所實作的特性時,我們将會另加說明。
當聲明本書中的代碼例子被認為合法時,我們所指的合法性是以1994年9月份ansi/iso c++的工作檔案(有時候也稱為“标準草案”)[ans94]為依據的。而且,在我們的代碼例子裡,我們将盡量避免使用那些我們認為在最終ansi/iso c++标準公布之前,很有可能會被删除或者進行重大修改的語言特性。
<a href="https://yq.aliyun.com/articles/95506/">1.1 什麼是重用性</a>
<a href="https://yq.aliyun.com/articles/95511">1.2 重用的神話</a>
<a href="https://yq.aliyun.com/articles/95513">1.3 重用的障礙</a>
<a href="https://yq.aliyun.com/articles/95516">1.4 希望是否尚存</a>
<a href="https://yq.aliyun.com/articles/95519">1.5 這本書能給我們帶來什麼</a>
<a href="https://yq.aliyun.com/articles/95524">1.6 練習</a>
<a href="https://yq.aliyun.com/articles/95527/">1.7 參考文獻和相關資料</a>
<a href="https://yq.aliyun.com/articles/95535/">2.1 抽象性</a>
<a href="https://yq.aliyun.com/articles/95543">2.2 正規函數</a>
<a href="https://yq.aliyun.com/articles/95547">2.3 nice類</a>
<a href="https://yq.aliyun.com/articles/95556">2.4 存在最小标準接口嗎</a>
<a href="https://yq.aliyun.com/articles/95562">2.5 淺拷貝和深拷貝</a>
<a href="https://yq.aliyun.com/articles/95566">2.6 接口一緻性</a>
<a href="https://yq.aliyun.com/articles/95568/">2.7 轉型</a>
<a href="https://yq.aliyun.com/articles/95571">2.8 const關鍵字的使用</a>
<a href="https://yq.aliyun.com/articles/95572">2.9 總結</a>
<a href="https://yq.aliyun.com/articles/95577/">2.10 練習</a>