C++語言是一種混合型語言(20世紀80年代興起),它保留了C語言全部的優勢,同時又增添了面向對象的編程機制,咱們能夠將C++語言視爲C語言的改進和擴展。程序員
基於C語言開發的C++語言兼容C語言,所以用C語言編寫的程序基本上能夠不作改動地用於C++。相對於C語言,C++語言對C語言的功能作了必定的擴充,同時增添了面向對象編程機制。引入面向對象編程機制,主要是爲了提升開發效率。編程
這纔是真正的C++!數據結構
早期C++許多的工做是對於C的強化和淨化,並把徹底兼容C做爲強制性要求。C8九、C99中許多的改進正是從C++中所引進。可見,Stroustrup對C語言的貢獻很是之大。今天無論你對C++怎麼看,C++的確擴展和進化了C,對C形成了深遠的影響。函數
2)在C++兼容C的過程當中遇到了很多設計實現上的麻煩;以及守舊的K&R C程序員對Stroustrup的批評。不少人說C++的惡夢惡夢就是要去兼容於C,這並不無道理(Java就乾的比C++完全得多),但這並非Stroustrup考慮的,Stroustrup一邊在使盡渾身解數來兼容C,另外一方面在拼命地優化C。佈局
3)C++最大的競爭對手正是C,他的目的就是——C能作到的,C++也必須作到,並且要作的更好。你們以爲是否是作到了?有多少作到了,有多少尚未作到?性能
4)對於同時關注的運行效率和開發效率的程序員,Stroustrup屢次強調C++的目標是——「在保證效率與C語言至關的狀況下,增強程序的組織性;能保證一樣功能的程序,C++更短小」,這正是淺封裝的核心思想。而不是過渡設計的OO。學習
5)《C++演化和設計》這本書中舉了不少例子來回應那些批評C++有運行性能問題的人。C++在其第二個版本中,引入了虛函數機制,這是C++效率最大的瓶頸了,但我我的認爲虛函數就是多了一次加法運算,但讓咱們的代碼能有更好的組織,極大增長了程序的閱讀和降底了維護成本。(注:Lippman的《深刻探索C++對象模型》也說明了C++不比C的程序在運行性能低。Bruce的《Think in C++》也說C++和C的性能相差只有5%)優化
6)這本書中還講了一些C++的痛苦的取捨,印象最深的就是多重繼承,提出,拿掉,再被提出,反覆不少次,你們在得與失中不斷地辯論和取捨。這個過程讓我最大的收穫是——a) 對於任何一種設計都有好有壞,都只能偏重一方,b) 徹底否認式的批評是很差的心態,好的心態應該是建設性地批評。編碼
相對運行於虛擬機語言,C/C++直接以靜態形式把源程序編譯爲目標平臺的機器碼。通常而言,C/C++程序在編譯及連接時可進行的優化最豐富,啓動時的速度最快,運行時的額外內存開銷最少。而C/C++相對動態語言也減小了運行時的動態類型檢測。此外,C/C++的運行行爲是肯定的,且不會有額外行爲,也不會有如垃圾收集(GC)而形成的不肯定性延遲,並且C/C++的數據結構在內存中的佈局也是肯定的。有時C++的一些功能會使程序性能優於C,當中之內聯和模版最爲突出,這兩項功能使C++標準庫的sort()一般比C標準庫的qsort()快多倍(C可用宏或人手編碼去解決此問題)。另外一方面,C/C++能直接映射機器碼,之間沒有另外一層中間語言,所以能夠作底層優化,例如使用內部(intrinsic)函數和嵌入彙編語言。然而,許多C++的性能優勢並不是免費午飯,代價包括較長的編譯連接時間和較易出錯,於是增長開發時間和成本。操作系統
這纔是真正的C++!
學編程最重要的是實踐,就是寫代碼、看別人寫的代碼、再寫代碼,你看再多的書,不寫代碼,你仍是不會編程。可是寫代碼也要講究方法按部就班,不能剛學了幾天語法,就想寫個操做系統什麼的,樹立這種不切實際的目標只會讓你的自信受到嚴重打擊迷失自我。
但願和你們一塊兒學習交流記一下交流裙775356268
**總而言之
學會交流,多交流,相互補益,同時團隊合做也是很重要的。
實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。**
有什麼不合適的地方還請多多指教!