溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++基礎(chǔ)概念是什么

發(fā)布時(shí)間:2021-12-09 11:37:21 來源:億速云 閱讀:161 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“C++基礎(chǔ)概念是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++基礎(chǔ)概念是什么”吧!

首先,通過一張最新(2021.11)的編程語(yǔ)言排名圖來了解常見的編程語(yǔ)言:

C++基礎(chǔ)概念是什么

從圖中可以看出,C++的排名相對(duì)于Python、Java、C來說并不突出,很大的原因是因?yàn)镃++難度過大,也可以說是知識(shí)點(diǎn)太多,我們很難說能精通C++這門語(yǔ)言,只能說對(duì)它的部分了解,并能在工作中使用;

1.C++相關(guān)網(wǎng)站推薦

1、cppreference.com:這是一個(gè)C++最具權(quán)威的百科全書,但只有英文模式,相信大家可以看懂的;

2、Compiler Explorer (godbolt.org) :在線代碼編輯,可以直接生成匯編代碼,可選擇不同的編譯器和版本,功能強(qiáng)大;

3、C++ Insights (cppinsights.io) :一個(gè)可以將C++代碼及逆行翻譯的網(wǎng)頁(yè),具體化代碼高級(jí)功能;

2.C++和C的關(guān)系

簡(jiǎn)單來說,C++是C語(yǔ)言的擴(kuò)展,主要有以下兩方面;

首先關(guān)注性能方面,這是繼承于C語(yǔ)言的特性:

  • 與底層硬件緊密結(jié)合

  • 對(duì)象生命周期的精確控制

  • Zero-overhead Abstraction

接著是擴(kuò)展部分,引入大量特性,便于工程實(shí)踐

三種編程范式:面向過程、面向?qū)ο蟆⒎盒?br/>函數(shù)重載、異常處理、引用

最后,C++也是一系列不斷演進(jìn)的標(biāo)準(zhǔn)集合

  • C++98、C++11、C++14、C++17、C++20、C++23?

  • 語(yǔ)言本身的改進(jìn)(例如Memory Model、Lambda Expressiomn)

  • 標(biāo)準(zhǔn)庫(kù)的改進(jìn)(auto_ptr、type_train/ranges)

  • C++標(biāo)準(zhǔn)的工業(yè)實(shí)現(xiàn)(MSVC、GCC、Clang)等編譯器還存在差異;

3.C++特性說明

下面通過具體案例來說明上面列出的點(diǎn)

3.1與底層硬件緊密結(jié)合

運(yùn)行其中的案例可以發(fā)現(xiàn),輸出的數(shù)從大到小;

C++基礎(chǔ)概念是什么

其實(shí)在硬件底層,存放內(nèi)存的地址分為大端法和小端法,而C++可以很好的適應(yīng)不同硬件的存儲(chǔ)方式,這樣有助于提升性能,相比來說,JAVA就不考慮這些,導(dǎo)致數(shù)據(jù)存放到內(nèi)存還需要再做一些處理,會(huì)增加一定的時(shí)間;

3.2對(duì)象生命周期的精確控制

這里我們使用C++與C#做比較,對(duì)于C#而言,使用完一個(gè)對(duì)象并不用關(guān)注銷毀,底層會(huì)自動(dòng)進(jìn)行銷毀(垃圾回收機(jī)制);而C++從對(duì)象的創(chuàng)建、使用到銷毀都需要使用者自己執(zhí)行,不需要系統(tǒng)額外引用機(jī)制;這里有兩個(gè)需要平衡的點(diǎn),也就是易用和性能,這兩者是有一定取舍的;

下面是C++和C#對(duì)于異常的處理方式:

C++基礎(chǔ)概念是什么

C++基礎(chǔ)概念是什么

造成這處理異常不同的原因就是生命周期精確控制引發(fā)的,F(xiàn)inally主要是用來顯式銷毀對(duì)象;

對(duì)生命周期的精準(zhǔn)控制的好處:能夠及時(shí)釋放資源,并且不需要額外資源(線程)進(jìn)行垃圾回收,提高了性能;

3.3Zero-Overhead Abstraction

主要包含以下兩點(diǎn):

不需要為沒有使用的語(yǔ)言特性付出代價(jià)
例如虛函數(shù),或者說在堆或棧構(gòu)造對(duì)象,可以通過這個(gè)例子來理解:Compiler Explorer (godbolt.org)

使用一些語(yǔ)言特性不等于付出運(yùn)行期成本
可以通過這個(gè)例子來理解:Compiler Explorer (godbolt.org)

我們調(diào)用函數(shù)并沒有付出函數(shù)中的運(yùn)行成本,這也是由于函數(shù)在編譯期執(zhí)行;

感謝各位的閱讀,以上就是“C++基礎(chǔ)概念是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)C++基礎(chǔ)概念是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI