C++基礎(chǔ)概念講述
首先,通過一張最新(2021.11)的編程語言排名圖來了解常見的編程語言:
從圖中可以看出,C++的排名相對于Python、Java、C來說并不突出,很大的原因是因為C++難度過大,也可以說是知識點太多,我們很難說能精通C++這門語言,只能說對它的部分了解,并能在工作中使用;
1.C++相關(guān)網(wǎng)站推薦
1、cppreference.com:這是一個C++最具權(quán)威的百科全書,但只有英文模式,相信大家可以看懂的;
2、Compiler Explorer (godbolt.org) :在線代碼編輯,可以直接生成匯編代碼,可選擇不同的編譯器和版本,功能強大;
3、C++ Insights (cppinsights.io) :一個可以將C++代碼及逆行翻譯的網(wǎng)頁,具體化代碼高級功能;
2.C++和C的關(guān)系
簡單來說,C++是C語言的擴展,主要有以下兩方面;
首先關(guān)注性能方面,這是繼承于C語言的特性:
- 與底層硬件緊密結(jié)合
- 對象生命周期的精確控制
- Zero-overhead Abstraction
接著是擴展部分,引入大量特性,便于工程實踐
三種編程范式:面向過程、面向?qū)ο?、泛?br />函數(shù)重載、異常處理、引用
最后,C++也是一系列不斷演進的標(biāo)準(zhǔn)集合
- C++98、C++11、C++14、C++17、C++20、C++23?
- 語言本身的改進(例如Memory Model、Lambda Expressiomn)
- 標(biāo)準(zhǔn)庫的改進(auto_ptr、type_train/ranges)
- C++標(biāo)準(zhǔn)的工業(yè)實現(xiàn)(MSVC、GCC、Clang)等編譯器還存在差異;
3.C++特性說明
下面通過具體案例來說明上面列出的點
3.1與底層硬件緊密結(jié)合
打開網(wǎng)站: https://godbolt.org/z/xPq6e9
運行其中的案例可以發(fā)現(xiàn),輸出的數(shù)從大到??;
? 其實在硬件底層,存放內(nèi)存的地址分為大端法和小端法,而C++可以很好的適應(yīng)不同硬件的存儲方式,這樣有助于提升性能,相比來說,JAVA就不考慮這些,導(dǎo)致數(shù)據(jù)存放到內(nèi)存還需要再做一些處理,會增加一定的時間;
3.2對象生命周期的精確控制
? 這里我們使用C++與C#做比較,對于C#而言,使用完一個對象并不用關(guān)注銷毀,底層會自動進行銷毀(垃圾回收機制);而C++從對象的創(chuàng)建、使用到銷毀都需要使用者自己執(zhí)行,不需要系統(tǒng)額外引用機制;這里有兩個需要平衡的點,也就是易用和性能,這兩者是有一定取舍的;
下面是C++和C#對于異常的處理方式:
造成這處理異常不同的原因就是生命周期精確控制引發(fā)的,F(xiàn)inally主要是用來顯式銷毀對象;
對生命周期的精準(zhǔn)控制的好處:能夠及時釋放資源,并且不需要額外資源(線程)進行垃圾回收,提高了性能;
3.3Zero-Overhead Abstraction
主要包含以下兩點:
不需要為沒有使用的語言特性付出代價
例如虛函數(shù),或者說在堆或棧構(gòu)造對象,可以通過這個例子來理解:Compiler Explorer (godbolt.org)
使用一些語言特性不等于付出運行期成本
可以通過這個例子來理解:Compiler Explorer (godbolt.org)
我們調(diào)用函數(shù)并沒有付出函數(shù)中的運行成本,這也是由于函數(shù)在編譯期執(zhí)行;
到此這篇關(guān)于C++基礎(chǔ)概念講述的文章就介紹到這了,更多相關(guān)C++基礎(chǔ)概念內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vs2022環(huán)境下安裝低版本.net framework的實現(xiàn)步驟
本文主要介紹了Vs2022環(huán)境下安裝低版本.net framework的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Matlab實現(xiàn)統(tǒng)計集合中各元素出現(xiàn)次數(shù)的示例代碼
統(tǒng)計數(shù)組中各個元素數(shù)量是一個很常用的功能,本文主要為大家介紹了如何利用Matlab優(yōu)雅的統(tǒng)計集合中各元素出現(xiàn)的次數(shù),感興趣的可以了解一下2022-05-05關(guān)于vs strcpy_s()和strcat_s()用法探究
這篇文章主要介紹了關(guān)于vs strcpy_s()strcat_s()用法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05C++實現(xiàn)拷貝構(gòu)造函數(shù)的方法詳解
拷貝構(gòu)造函數(shù)是構(gòu)造函數(shù)的一個重載,因此顯式的定義了拷貝構(gòu)造,那么編譯器也不再默認(rèn)生成構(gòu)造函數(shù)。本文主要介紹了C++實現(xiàn)拷貝構(gòu)造函數(shù)的方法,需要的可以參考一下2022-09-09