C++可以分為幾個(gè)部分。
首先,您具有基本的面向?qū)ο蠊δ堋T贑++中,此功能非常強(qiáng)大。我建議您了解有關(guān)類中的多重繼承,多態(tài),重寫(xiě)運(yùn)算符,構(gòu)造函數(shù)和析構(gòu)函數(shù),工廠,范圍控制和靜態(tài)變量的知識(shí)。
其次,有模板。在C++中,您有很多數(shù)據(jù)類型,其中所有操作均已定義,但某些關(guān)鍵屬性未定義。它是抽象數(shù)據(jù)類型的一種形式。創(chuàng)建模板實(shí)例時(shí),根據(jù)模板填寫(xiě)一些或全部缺少的信息。模板使您無(wú)需編寫(xiě)代碼即可擁有一些相當(dāng)復(fù)雜的數(shù)據(jù)類型(包括混合數(shù)據(jù)類型)。由于模板的使用量很大,因此代碼往往非常健壯。
第三,與其他程序進(jìn)行交互。C++支持套接字,POSIX線程和多個(gè)進(jìn)程。有許多第三方庫(kù)可以簡(jiǎn)化這些操作。第三方庫(kù)還為您提供RPC和CORBA,盡管這些年來(lái)使用它們已下降。您絕對(duì)應(yīng)該了解被動(dòng)軟件,主動(dòng)軟件和被動(dòng)軟件之間的區(qū)別,更多地是要了解潛在的問(wèn)題和陷阱。您可能會(huì)編寫(xiě)比“您應(yīng)編寫(xiě)響應(yīng)式服務(wù)器”更為開(kāi)放的解決方案,但是了解這些選項(xiàng)將為您提供增加有用的細(xì)微差別的空間。
第四,安全性。CERT發(fā)布了一個(gè)網(wǎng)頁(yè),其中包含針對(duì)C,C++和Java程序的所有當(dāng)前推薦的所有安全標(biāo)準(zhǔn)-應(yīng)避免的事情,要做的事情或類似的事情。在輸入方面,安全性極為重要。輸入應(yīng)始終經(jīng)過(guò)驗(yàn)證,但是事情會(huì)被遺忘,或者您可以進(jìn)行的驗(yàn)證存在局限性。如果您在這些地方使用安全代碼,則錯(cuò)誤或惡意破壞整個(gè)系統(tǒng)的風(fēng)險(xiǎn)會(huì)大大降低。
我將從列表中的第一個(gè)開(kāi)始,并逐漸精通它。這對(duì)其他所有事情都至關(guān)重要。您不必是專家,但您必須確信潛伏著沒(méi)有大的驚喜。
對(duì)于第二,第三和第四部分,我將各學(xué)習(xí)一遍,并學(xué)習(xí)一下。如果沒(méi)有程序交互,某些模板將毫無(wú)意義,高質(zhì)量的交互意味著對(duì)安全性有所了解。每一種都很好地混合在一起,一勞永逸,對(duì)您有好處。練習(xí),不要讓新信息讓自己超載,但永遠(yuǎn)不要讓它過(guò)時(shí)。可以長(zhǎng)時(shí)間保持新鮮。
一旦對(duì)這四個(gè)方面都充滿信心,您可能會(huì)遇到一些反復(fù)出現(xiàn)的問(wèn)題或某些似乎不完整的領(lǐng)域。同樣,這可能會(huì)順利進(jìn)行。但是,如果您發(fā)現(xiàn)自己反復(fù)遇到相同的障礙,那么您希望查看一些第三方庫(kù)或擴(kuò)展。
Boost可能是唯一如此標(biāo)準(zhǔn)以至于幾乎是標(biāo)準(zhǔn)的一部分。這提供了許多非常有用的幫助程序功能,這些功能使編程更加容易。
當(dāng)涉及到對(duì)C++標(biāo)準(zhǔn)的實(shí)際擴(kuò)展時(shí),我只能想到兩種-面向方面的C++和功能性C++。它們添加了全新的編程形式,對(duì)于需要比C++范例支持更多空間的人們來(lái)說(shuō),這是非常好的選擇。
數(shù)據(jù)庫(kù)是另一回事。您可能需要熟悉流行的關(guān)系數(shù)據(jù)庫(kù)的大量C++連接器,但也有面向?qū)ο蟮臄?shù)據(jù)庫(kù)和對(duì)象關(guān)系的數(shù)據(jù)庫(kù)。他們是不同的東西。它們使您能夠以各種方式停留在OO范式中,這非常好,因?yàn)樗梢允鼓木幊瘫3忠恢隆H秉c(diǎn)是它們是一種較不成熟的技術(shù),而且相當(dāng)稀有。但是,如果您編寫(xiě)的程序需要內(nèi)部存儲(chǔ)和檢索數(shù)據(jù),而不要求任何其他程序可以進(jìn)入數(shù)據(jù)庫(kù),那么您將瘋狂地運(yùn)行像PostgreSQL或MySQL這樣繁重的工作,并且需要進(jìn)行所有轉(zhuǎn)換往返對(duì)象。把事情簡(jiǎn)單化。