1. 程式人生 > >庫-摘自《C++沉思錄》Andrew Koenig

庫-摘自《C++沉思錄》Andrew Koenig

       C++是可擴充套件的。使用者不能改變底層語言本身--不能增加新的操作符或者改變語法--但是可以為這門語言增加新的型別。在這方面,C++與某些自然語言相似,如在英語中,人們可以發明新詞,但是很難改變語法。然而,擴充套件語言說起來容易做起來難。

       迄今為止我們所見過的絕大多數 類都是為解決特定問題而設計的。我們曾經考慮過類是否可在所有情況下為所有使用者使用。我們曾花費過精力來改進類,但最關注的還是在原有條件下使用類。這是大部分類被設計和建立的過程。但是,有時我們想做的不僅僅是為方便自己使用增加新型別,還希望支援其他使用者的使用需求。如果某一組類的設計和實現是希望得到廣泛應用,那麼我們就稱之為庫

       為了設計其他人也能使用的類,庫作者需要承擔許多類似語言設計者的工作。類的使用者希望這個類足夠“聰明”。他們希望類設計者提供的行為,與我們通常希望編譯器提供的行為相似:正確的建立、複製、賦值或者銷魂物件。他們還希望類有一些合理的語義:要有足夠的操作供他們以直觀的或者自然的方式使用這個類

      所謂的“聰明”,還要求類介面的設計有助於減少使用者可能犯下的錯誤,這一點總是被人忽視

       讓使用者進行語言設計也有不利的一面,因為C++語言本身必須按照庫設計者的需求來設計。這涉及到範圍廣泛的問題,從允許使用者自定義類成為完全型別,到型別安全的連線,不一而足。