初學編程,選C仍是選C++,你選對了嗎

若是手頭有一個強大的C ++編譯器,切勿使用C。編程

若是須要,可使用禁止C ++的全部功能的編碼約定,包括標準C ++庫,異常,RTTI以及C ++符號修飾。安全

可是,C ++具備許多能夠編寫代碼的功能,更具可讀性…無需額外費用,更易於維護……無需額外費用,運行更快……無需額外費用,開發速度更快……無需額外費用,能夠擴展並開放以進行關鍵更改……無需額外費用。閉包

所謂成本,是指運行時性能,可執行文件大小和內存使用狀況。可是,若是您願意作出一些取捨,事情可能只會變得更好。函數


 

一些細節:工具

1.在最基本的層次上,能夠從更豐富的語法和關鍵字中受益。如auto,decltype,typename,using。在正確的上下文中嵌套信息。使用名稱空間,限定常量,類型名和嵌套的typedef。其中許多也涉及。還有一些語言功能能夠消除C語言的冗長和晦澀:閉包vs f(void *),模板函數vs宏。性能

2.C程序是水平層,一層在另外一層之上,抽象是一個void *。相同的信息須要反覆編碼,而後全部方面都反映瞭如何在一個方面實施這種更改。在C ++中,能夠一次定義信息並將其傳播以建立數據類型,匹配生產代碼以及診斷全部這些維護類型安全且無運行時開銷的信息。能夠輕鬆編寫通用代碼。因爲重載,模板功能和類型特徵,能夠在不一樣的上下文中重用功能較小或較大的代碼塊,並能夠任意組合。測試

僅從智能宏起使用模板功能可使您受益不淺。而後使用RAII不再會遇到相同的「忘記在返回路徑上放下鎖」了。元編程將幫助您生成編組或診斷代碼等。這些都不須要異常或C ++ lib或接觸面向對象的編程。優化


 

這裏有一個提示:C ++庫以外的許多工具實際上不須要連接到C ++庫二進制文件。C ++編譯器可以生成更好的優化代碼的緣由不少。強類型系統(查找強別名),使用const類型和const表達式。而後,用做智能宏的模板函數能夠消除循環,而且許多元代碼能夠解析編譯時和實際調用中的條件。編碼

在不一樣的上下文中再次重用通用代碼的能力意味着更少的代碼編寫。C ++容許以較小的片斷來破壞程序,從而能夠進行更精細的測試和/或經過不一樣的橫截面而不只僅是層。測試是現代敏捷開發的基礎。缺少測試一般源於不良的測試能力,阻礙了開發,阻礙了重構並鼓勵了技術債務的積累。3d

C的侷限性傾向於令人們傾向於使用特定的分層代碼。某些類型的抽象沒法表達,所以位最終散佈在代碼庫中並被複制。沒有辦法將它們做爲功能實體一塊兒進行測試。只要新功能適合現有體系結構,一切都將適中。當須要進行一種顛覆內部層次結構的變革時,這確實使人痛苦。有不少代碼重寫,包括測試。風險很大。


 

總結一下,C ++具備許多小而強大的功能,這些功能累計會帶來巨大的不一樣。它們中的許多易於掌握,能夠在現有的C代碼庫中使用。其餘可能在重構或技術債務清除期間添加。甚至元編程也能夠逐漸豐富相似C的代碼。

今天就講到這裏啦,想了解C語言與C++的,能夠關注我。

相關文章
相關標籤/搜索