c與c++的區(qū)別有哪些
2019-12-081007
編程的學(xué)習(xí)學(xué)無止境,只掌握一門語言是遠(yuǎn)遠(yuǎn)不夠的,那么c與c++的區(qū)別有哪些呢?下面是小編整理的詳細(xì)內(nèi)容,希望對(duì)大家有所幫助!
C與C++的區(qū)別1、C++是面向?qū)ο笳Z言,C是面向過程語言。
2、結(jié)構(gòu):C以結(jié)構(gòu)體struct為核心結(jié)構(gòu);C++以類class為核心結(jié)構(gòu)。
3、多態(tài):C可以以宏定義的方式“自定義”部分地支持多態(tài);C++自身提供多態(tài),并以模板templates支持編譯期多態(tài),以虛函數(shù)virtual function支持運(yùn)行期多態(tài)。
4、頭文件的調(diào)用:C++用< >代替” “代表系統(tǒng)頭文件;且復(fù)用C的頭文件時(shí),去掉”.h”在開頭加上”C”。
5、輸入輸出:鑒于C++中以對(duì)象作為核心,輸入和輸出都是在流對(duì)象上的操作。
6、封裝:C中的封裝由于struct的特性全部為公有封裝,C++中的封裝由于class的特性更加完善、安全。
7、常見風(fēng)格:C中常用宏定義來進(jìn)行文本替換,不具有類型安全性;C++中常建議采用常量定義,具有類型安全性。
8、效率:常見的說法是同等目的C通常比C++更富有效率(這其實(shí)有一定的誤解,主要在于C++代碼更難于優(yōu)化且少有人使用編譯期求值的特性)。
9、常用語言/庫特性:
a、數(shù)組:C中采用內(nèi)建數(shù)組,C++中建議采用vector。相比之下vector的大小可以動(dòng)態(tài)增長,且使用一些技巧后增長并不低效,且成員函數(shù)豐富。
b、字符串 C中采用C風(fēng)格的string(實(shí)則為字符串?dāng)?shù)組),C++中建議采用string,對(duì)比與上一條類似。
c、內(nèi)存分配:C中使用malloc與free,它們是是C標(biāo)準(zhǔn)庫函數(shù),C++中建議使用new/delete代替前者,他們說是C++的運(yùn)算符(這是筆試面試常考點(diǎn))以C++中的new為例,new可分為operator new(new 操作)、new operator(new 操作符)和placement new(定位 new)。其中operator new執(zhí)行和malloc相同的任務(wù),即分配內(nèi)存,但對(duì)構(gòu)造函數(shù)一無所知;而 new operator則調(diào)用operator new,分配內(nèi)存后再調(diào)用對(duì)象構(gòu)造函數(shù)進(jìn)行對(duì)象的構(gòu)造。其中operator new是可以重載的。placement new,就是operator new的一個(gè)重載版本,允許你在一個(gè)已經(jīng)分配好的內(nèi)存中構(gòu)造一個(gè)新的對(duì)象。
d、指針:C中通常使用的是原生指針(raw pointer),由于常出現(xiàn)程序員在申請(qǐng)后忘記釋放造成資源泄漏的問題,在C++98中加入了“第一代”基于引用計(jì)數(shù)的智能指針auto_ptr,由于初代的各種問題(主要是無法解決循環(huán)指針),在03標(biāo)準(zhǔn)也就是TR1中引入了shared_ptr,weak_ptr和unique_ptr這三個(gè)功能各異的智能指針,并與11標(biāo)準(zhǔn)中正式確定,較好的解決了上述問題。
C++與C先學(xué)哪個(gè)先學(xué)C再學(xué)c++
由于語言的簡潔性,許多初級(jí)程序員會(huì)在c++之前學(xué)習(xí)C。作為一種過程語言,初學(xué)者通常更容易掌握。它是一種更簡單的語言,具有更少的選項(xiàng),因此,它是編程的堅(jiān)實(shí)基礎(chǔ)。許多程序員從C語言轉(zhuǎn)向Java或c++。通過先學(xué)習(xí)C語言,程序員可以適應(yīng)這種語言的過程性,然后通過c++學(xué)習(xí)面向?qū)ο缶幊?。c++比C要復(fù)雜得多,對(duì)于初學(xué)者來說是難以應(yīng)付的。
先學(xué)c++再學(xué)C
對(duì)于已經(jīng)習(xí)慣面向?qū)ο缶幊毯瓦^程編程的高級(jí)程序員來說,在C之前學(xué)習(xí)c++是一個(gè)可以理解的選擇。在當(dāng)今的編程世界中,c++被越來越多地使用,而且它通常被認(rèn)為是更健壯的語言,盡管C更適合某些應(yīng)用程序。
對(duì)特定領(lǐng)域感興趣的程序員,比如上面提到的視頻游戲行業(yè),可能不會(huì)使用C語言,事實(shí)上,可能永遠(yuǎn)都不需要使用它。此外,一些人可能會(huì)發(fā)現(xiàn)同時(shí)學(xué)習(xí)C和c++很令人困惑,因?yàn)檫@兩種語言有相似之處,很容易讓開發(fā)人員出錯(cuò)。
溫馨提示:頻道所載文章、圖片、數(shù)據(jù)等內(nèi)容以及相關(guān)文章評(píng) 論純屬個(gè)人觀點(diǎn)和網(wǎng)友自行上傳,并不代表本站立場(chǎng)。如發(fā)現(xiàn) 有違法信息或侵權(quán)行為,請(qǐng)留言或直接與本站管理員聯(lián)系,我 們將在收到您的信息后24小時(shí)內(nèi)作出刪除處理。