? ? ? ? 一開(kāi)始,C++只是C加上一些面向?qū)ο筇卣骼ㄊ凇++最初的名稱C with Classes也反應(yīng)了這段血緣關(guān)系嗡载。但是現(xiàn)在C++已經(jīng)是個(gè)多重泛型編程語(yǔ)言闷供,一個(gè)同時(shí)支持過(guò)程形式、面向?qū)ο笮问蕉峄摹⒑瘮?shù)形式瞒渠、泛型形式、元編程形式的語(yǔ)言技扼。
????????為了理解C++伍玖,你必須認(rèn)識(shí)其中主要的次語(yǔ)言。幸運(yùn)的是總共只有四個(gè):
C剿吻。?說(shuō)到底C++仍是以C為基礎(chǔ)窍箍。區(qū)塊、語(yǔ)句丽旅、預(yù)處理器椰棘、內(nèi)置數(shù)據(jù)類型、數(shù)組榄笙、指針等統(tǒng)統(tǒng)來(lái)自C邪狞。許多時(shí)候C++對(duì)問(wèn)題的解法其實(shí)不過(guò)就是較高級(jí)的C解法。
Object-Oriented C++茅撞。這部分也就是C with Classes所訴求的:classes(包括構(gòu)造函數(shù)和析構(gòu)函數(shù))帆卓,封裝巨朦、繼承、多態(tài)鳞疲、virtual函數(shù)(動(dòng)態(tài)綁定)......等等罪郊,這一部分是面向?qū)ο笤O(shè)計(jì)之古典守則在C++上的最直接實(shí)施。
Template C++尚洽。這是C++的泛型編程部分悔橄,也是大多數(shù)程序員經(jīng)驗(yàn)最少的部分。Template相關(guān)考慮與設(shè)計(jì)已經(jīng)彌漫整個(gè)C++腺毫,良好編程守則中“惟template適用”的特殊條款并不罕見(jiàn)癣疟。實(shí)際上由于templates威力強(qiáng)大,他們帶來(lái)嶄新的編程規(guī)范潮酒,也就是所謂template metaprogramming(TMP 模板元編程)睛挚。
STL。STL是個(gè)template程序庫(kù)急黎,看名稱也知道扎狱,但它是非常特殊的一個(gè)。它對(duì) 容器勃教、迭代器淤击、算法以及函數(shù)對(duì)象的規(guī)約有極佳的緊密配合與協(xié)調(diào),然而templates及程序庫(kù)也可以其它想法建置出來(lái)故源。STL有自己特殊的辦事方式污抬,當(dāng)你伙同STL一起工作,你必須遵守它的規(guī)約绳军。
????????因此印机,C++并不是一個(gè)帶有一組守則的一體語(yǔ)言;它是從四個(gè)次語(yǔ)言組成的聯(lián)邦政府门驾,每個(gè)次語(yǔ)言都有自己的規(guī)約射赛。記住這四個(gè)次語(yǔ)言你就會(huì)發(fā)現(xiàn)C++容易了解得多。