C与C++的区别
C與C++的區(qū)別
- C++的起源
- C與C++的區(qū)別
- C與C++在一些方面哪個(gè)更優(yōu)秀
- 技術(shù)層面
- 商業(yè)層面
C++的起源
20世紀(jì)70年代中期,Bjarne Stroustrup在劍橋大學(xué)計(jì)算機(jī)中心工作。
他使用過(guò)Simula和ALGOL,接觸過(guò)C。
他對(duì)Simula的類體系感受頗深,對(duì)ALGOL的結(jié)構(gòu)也很有研究,深知運(yùn)行效率的意義。
既要編程簡(jiǎn)單、正確可靠,又要運(yùn)行高效、可移植,是Bjarne Stroustrup的初衷。
以C為背景,以Simula思想為基礎(chǔ),正好符合他的設(shè)想。
1979年,Bjame Sgoustrup到了Bell實(shí)驗(yàn)室,開始從事將C改良為帶類的C(C with classes)的工作。
1983年該語(yǔ)言被正式命名為C++。
自從C++被發(fā)明以來(lái),它經(jīng)歷了3次主要的修訂,每一次修訂都為C++增加了新的特征并作了一些修改。
第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發(fā)生在c++的標(biāo)準(zhǔn)化過(guò)程中。
在20世紀(jì)90年代早期,人們開始為C++建立一個(gè)標(biāo)準(zhǔn),并成立了一個(gè)ANSI和ISO(Intemational Standards
Organization)國(guó)際標(biāo)準(zhǔn)化組織的聯(lián)合標(biāo)準(zhǔn)化委員會(huì)。
該委員會(huì)在1994年1月25曰提出了第一個(gè)標(biāo)準(zhǔn)化草案。
在這個(gè)草案中,委員會(huì)在保持Stroustrup最初定義的所有特征的同時(shí),還增加了一些新的特征。
C與C++的區(qū)別
- C是面向過(guò)程的語(yǔ)言,C++是面向?qū)ο蟮恼Z(yǔ)言。
- 動(dòng)態(tài)管理內(nèi)存的方法,C是使用malloc/free函數(shù),而C++使用new/delete關(guān)鍵字;
- C中的struct和C++的類,C++的類是C所沒有的,但是C中的struct是可以在C++中正常使用,并且C++對(duì)struct進(jìn)行了進(jìn)一步的擴(kuò)展,使struct在C++中可以和class一樣當(dāng)做類使用,而唯一和class不同的地方在于struct的成員默認(rèn)訪問修飾符是public,而class默認(rèn)的是private;
- C++支持函數(shù)重載,而C不支持函數(shù)重載,而C++支持重載的依仗就在于C++的名字修飾與C不同,例如在C++中函數(shù)int fun(int,int)經(jīng)過(guò)名字修飾之后變?yōu)?_fun_int_int ,而C是_fun,一般是這樣的,所以C++才會(huì)支持不同的參數(shù)調(diào)用不同的函數(shù)(C++編譯匯編時(shí),會(huì)將重載的函數(shù)根據(jù)參數(shù)表,翻譯成不同的函數(shù)名來(lái)實(shí)現(xiàn)重載);
- C++中有引用,而C沒有;這樣就不得不提一下引用和指針的區(qū)別;
- C++全部變量的默認(rèn)鏈接屬性是外鏈接,而C是內(nèi)連接;
- C中用const修飾的變量不可以用在定義數(shù)組時(shí)的大小,但是C++用const修飾的變量可以(如果不進(jìn)行&,解引用的操作的話,是存放在符號(hào)表的,不開辟內(nèi)存);
- 此外,C++還有的一些特性(封裝、繼承、多態(tài)、泛型)等不一一列舉了。
C與C++在一些方面哪個(gè)更優(yōu)秀
技術(shù)層面
C占用資源少,運(yùn)行速度較快。
C++面向?qū)ο蟮脑O(shè)計(jì)思想,擁有強(qiáng)大的特性和庫(kù),開發(fā)效率高。
商業(yè)層面
C用于嵌入式開發(fā)和操作系統(tǒng)的開發(fā)。
C++用于商業(yè)軟件和網(wǎng)絡(luò)游戲開發(fā)。
參考與引用的網(wǎng)址:
[1].https://baike.baidu.com/item/C++/99272
[2].https://blog.csdn.net/bitboss/article/details/62884694
總結(jié)
- 上一篇: Java使用百度地图API,根据地址,查
- 下一篇: 2019中兴通讯软件开发岗c/c++方向