日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

详解C与C++的联系与区别

發(fā)布時(shí)間:2025/3/15 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解C与C++的联系与区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C++與C的聯(lián)系:

C++是在C語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)的一種面向?qū)ο缶幊陶Z(yǔ)言,應(yīng)用廣泛。C++支持多種編程范式 --面向?qū)ο缶幊獭⒎盒途幊毯瓦^(guò)程化編程。 其編程領(lǐng)域眾廣,常用于系統(tǒng)開(kāi)發(fā),引擎開(kāi)發(fā)等應(yīng)用領(lǐng)域,是最受廣大程序員受用的最強(qiáng)大編程語(yǔ)言之一,支持類(lèi):類(lèi)、封裝、重載等特性!

C++C的基礎(chǔ)上增添類(lèi),C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過(guò)一個(gè)過(guò)程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過(guò)程(事務(wù))控制),而對(duì)于C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問(wèn)題域,這樣就可以通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程(事務(wù))控制。

C++與C的區(qū)別:

1、C是面向過(guò)程的語(yǔ)言,而C++是面向?qū)ο蟮恼Z(yǔ)言,那么什么是面向?qū)ο?#xff1f;

面向?qū)ο?#xff1a;面向?qū)ο笫且环N對(duì)現(xiàn)實(shí)世界的理解和抽象的方法、思想,通過(guò)將需求要素轉(zhuǎn)化為對(duì)象進(jìn)行問(wèn)題處理的一種思想。

2、C和C++動(dòng)態(tài)管理內(nèi)存的方法不一樣,C是使用malloc、free函數(shù),而C++不僅有malloc/free,還有new/delete關(guān)鍵字。那malloc/free和new/delete差別?

malloc/free和new/delete差別:

①、malloc/free是C和C++語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),new/delete是C++的運(yùn)算符。它們都可用于申請(qǐng)動(dòng)態(tài)內(nèi)存和釋放內(nèi)存。

②、由于malloc/free是庫(kù)函數(shù)不是運(yùn)算符,不在編譯器范圍之內(nèi),不能夠把執(zhí)行構(gòu)造函數(shù)和析構(gòu)函數(shù)的任務(wù)強(qiáng)加入malloc/free。因此C++需要一個(gè)能完成動(dòng)態(tài)內(nèi)存分配和初始化工作的運(yùn)算符new,一個(gè)能完成清理與釋放內(nèi)存工作的運(yùn)算符delete。

③、new可以認(rèn)為是malloc加構(gòu)造函數(shù)的執(zhí)行。new出來(lái)的指針是直接帶類(lèi)型信息的。而malloc返回的都是void指針。

④、malloc是從堆上開(kāi)辟空間,而new是從自由存儲(chǔ)區(qū)開(kāi)辟(自由存儲(chǔ)區(qū)是從C++抽象出來(lái)的概念,不僅可以是堆,還可以是靜態(tài)存儲(chǔ)區(qū))。

⑤、malloc對(duì)開(kāi)辟的空間大小有嚴(yán)格指定,而new只需要對(duì)象名。

⑥、malloc開(kāi)辟的內(nèi)存如果太小,想要換一塊大一點(diǎn)的,可以調(diào)用relloc實(shí)現(xiàn),但是new沒(méi)有直觀的方法來(lái)改變。

3、C中的struct和C++的類(lèi),C++的類(lèi)是C中沒(méi)有的,C中的struct可以在C++中等同類(lèi)來(lái)使用,struct和類(lèi)的差別是,struct的成員默認(rèn)訪問(wèn)修飾符是public,而類(lèi)默認(rèn)是private。

4、C++支持重載,而C不支持重載,C++支持重載在于C++名字的修飾符與C不同,例如在C++中函數(shù) int f(int) 經(jīng)過(guò)名字修飾之后變?yōu)開(kāi)f_int,而C是_f,所以C++才會(huì)支持不同的參數(shù)調(diào)用不同的函數(shù)。

5、C++中有引用,而C沒(méi)有。那指針和引用有什么差別?

指針和引用的區(qū)別:

①、指針有自己的一塊空間,而引用只是一個(gè)別名。

②、使用sizeof查看一個(gè)指針大小為4(32位),而引用的大小是被引用對(duì)象的大小。

③、指針可以是NULL,而引用必須被初始化且必須是對(duì)一個(gè)以初始化對(duì)象的引用。

④、作為參數(shù)傳遞時(shí),指針需要被解引用才可以對(duì)對(duì)象進(jìn)行操作,而直接對(duì)引用的修改都會(huì)改變引用所指向的對(duì)象。

⑤、指針在使用中可以指向其它對(duì)象,但是引用只能是一個(gè)對(duì)象的引用,不能被修改。

⑥、指針可以有多級(jí)指針(**p),而引用只有一級(jí)。

⑦、指針和引用使用++運(yùn)算符的意義不一樣。

6、C++全部變量的默認(rèn)連接屬性是外連接,而C是內(nèi)連接。

7、C中用const修飾的變量不可以用在定義數(shù)組時(shí)的大小,但是C++用const修飾的變量可以。(如果不進(jìn)行&,解引用的操作的話(huà),是存放在符號(hào)表的,不開(kāi)辟內(nèi)存)

8、C++有很多特有的輸入輸出流。

總結(jié)

以上是生活随笔為你收集整理的详解C与C++的联系与区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。