详解C与C++的联系与区别
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)題。
- 上一篇: BATJ原来是这样玩大数据的!
- 下一篇: C++中的类对象的内存分布以及虚函数表内