條款01:視C++為一個語言聯(lián)邦

? ? ? ? 一開始,C++只是C加上一些面向對象特征。C++最初的名稱C with Classes也反應了這段血緣關系。但是現(xiàn)在C++已經是個多重泛型編程語言,一個同時支持過程形式、面向對象形式、函數(shù)形式、泛型形式、元編程形式的語言。

????????為了理解C++,你必須認識其中主要的次語言。幸運的是總共只有四個:

C。?說到底C++仍是以C為基礎。區(qū)塊、語句、預處理器、內置數(shù)據類型、數(shù)組、指針等統(tǒng)統(tǒng)來自C。許多時候C++對問題的解法其實不過就是較高級的C解法。

Object-Oriented C++。這部分也就是C with Classes所訴求的:classes(包括構造函數(shù)和析構函數(shù)),封裝、繼承、多態(tài)、virtual函數(shù)(動態(tài)綁定)......等等,這一部分是面向對象設計之古典守則在C++上的最直接實施。

Template C++。這是C++的泛型編程部分,也是大多數(shù)程序員經驗最少的部分。Template相關考慮與設計已經彌漫整個C++,良好編程守則中“惟template適用”的特殊條款并不罕見。實際上由于templates威力強大,他們帶來嶄新的編程規(guī)范,也就是所謂template metaprogramming(TMP 模板元編程)。

STL。STL是個template程序庫,看名稱也知道,但它是非常特殊的一個。它對 容器、迭代器、算法以及函數(shù)對象的規(guī)約有極佳的緊密配合與協(xié)調,然而templates及程序庫也可以其它想法建置出來。STL有自己特殊的辦事方式,當你伙同STL一起工作,你必須遵守它的規(guī)約。

????????因此,C++并不是一個帶有一組守則的一體語言;它是從四個次語言組成的聯(lián)邦政府,每個次語言都有自己的規(guī)約。記住這四個次語言你就會發(fā)現(xiàn)C++容易了解得多。

請記?。?/b>

C++高效編程守則視狀況而變化,取決于你使用C++的哪一部分。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容