PHP、Java、Python、C、C++ 這幾種編程語言都各有什麼優勢或特色?(四)
C++有什麼編程範式?編程
- 過程式(使用STL的類C語言編程)
- ADT式(自定義抽象數據類型,繼承;可是不用new,不用virtual;拷貝構造;爲了防止資源泄漏,也發明了RAII的方式進行資源的初始化和釋放)
- 面向對象式(使用new,使用virtual,須要指針或引用;實現多態。)
- 泛型編程(《Modern C++ Design》各類奇淫技巧,業務層代碼比較少遇到)
C++編譯器是怎樣實現的?segmentfault
C++開始有一個叫作cfront的編譯器,即把C++語言先翻譯成C語言。編程語言
而後再用C編譯器來編譯,C的編譯器並不知道此段代碼是來自C++仍是C。
函數
C++語言特性分別是怎樣實現?簡單說。this
- 成員變量:和C語言的struct 相似,最後也會被直接替換成地址,便於高效訪問。
- 成員函數:使用特殊函數名編碼方案,翻譯成C函數,並添加this指針做參數。(如___clsA12345func001(…,clsA *this))
- 類型繼承體系:經過C++編譯時的Meta-Data來實現。即在編譯時,編譯器是知道類型信息與繼承體系的,可是編譯成C語言後就喪失了此類型信息。
- 虛函數、虛繼承:爲了支持多態,這也是「面向對象」最重要的特性,使用了虛函數表和虛基類表。注意,運行時多態是經過運行時查表實現的。稍後詳細說。
- 模板:經過代碼複製的方式實現。每次編譯都須要從新編譯,不能編成庫文件直接使用。
推薦觀看:笨辦法學Python!編程小白的第一本Python入門書!編碼
注意!spa