精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C語言和C++的區別和聯系

開發 后端
我們都知道C語言是面向過程語言,而C++是面向對象語言,說C和C++的區別,也就是在比較面向過程和面向對象的區別。

C語言和C++到底是什么關系?

首先C++和C語言本來就是兩種不同的編程語言,但C++確實是對C語言的擴充和延伸,并且對C語言提供后向兼容的能力。對于有些人說的C++完全就包含了C語言的說法也并沒有錯。

C++一開始被本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)發明時,起初被稱為“C with Classes”,即「帶類的C」。

很明顯它是在C語言的基礎上擴充了類class等面向對象的特性和機制。但是后來經過一步步修訂和很多次演變,最終才形成了現如今這個支持一系列重大特性的龐大編程語言。

一、C語言是面向過程語言,而C++是面向對象語言

我們都知道C語言是面向過程語言,而C++是面向對象語言,說C和C++的區別,也就是在比較面向過程和面向對象的區別。

(1)面向過程和面向對象的區別

面向過程:面向過程編程就是分析出解決問題的步驟,然后把這些步驟一步一步的實現,使用的時候一個一個的依次調用就可以了。

面向對象:面向對象編程就是把問題分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描述某個事物在整個解決問題的步驟中的行為。

(2)面向過程和面向對象的優缺點

面向過程語言

優點:性能比面向對象高,因為類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、 Linux/Unix等一般采用面向過程開發,性能是最重要的因素。

缺點:沒有面向對象易維護、易復用、易擴展

面向對象語言

優點:易維護、易復用、易擴展,由于面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易于維護

缺點:性能比面向過程低。

二、具體語言上的區別

1、關鍵字的不同

C語言有32個關鍵字;

C++有63個關鍵字;

2、后綴名不同

C源文件后綴.c,C++源文件后綴.cpp,在VS中,如果在創建源文件時什么都不給,默認是.cpp。

3、返回值

C語言中,如果一個函數沒有指定返回值類型,默認返回int類型;C++中,如果一個函數沒有返回值則必須指定為void。

4、參數列表

在C語言中,函數沒有指定參數列表時,默認可以接收任意多個參數;但在C++中,因為嚴格的參數類型檢測,沒有參數列表的函數,默認為 void,不接收任何參數。

5、缺省參數

缺省參數是聲明或定義函數時為函數的參數指定一個默認值。在調用該函數時,如果沒有指定實參則采用該默認值,否則使用指定的參。(C語言不支持缺省參數)

· 半缺省參數

· 全缺省參數

注意:

· 在半缺省的情況下,帶缺省值的參數必須放在參數列表的最后面。

· 缺省參數不能同時在函數的聲明和函數定義中出現,二者只能選其一。

· 缺省值必須是常量或者全局變量。

· 缺省參數必須通過值參或常參傳遞。

6、函數重載

函數重載:函數重載是函數的一種特殊情況,指在同一作用域中,聲明幾個功能類似的同名函數,這些同名函數的形參列表(參數個數、類型、順序)必須不同,返回值類型可以相同也可以不同,常用來處理實現功能類似數據類型不同的問題。(C語言沒有函數重載,C++支持函數重載)。

C語言中產生函數符號的規則是根據名稱產生,這也就注定了c語言不存在函數重載的概念。而C++生成函數符號則考慮了函數名、參數個數、參數類型。需要注意的是函數的返回值并不能作為函數重載的依據,也就是說int sum和double sum這兩個函數是不能構成重載的!

我們的函數重載也屬于多態的一種,這就是所謂的靜多態。

靜多態:函數重載,函數模板

動多態(運行時的多態):繼承中的多態(虛函數)。

使用重載的時候需要注意作用域問題:請看如下代碼。

我在全局作用域定義了兩個函數,它們由于參數類型不同可以構成重載,此時main函數中調用則可以正確的調用到各自的函數。

但是請看main函數中被注釋掉的一句代碼。如果將它放出來,則會提出警告:將double類型轉換成int類型可能會丟失數據。

這就意味著我們編譯器針對下面兩句調用都調用了參數類型int的compare。由此可見,編譯器調用函數時優先在局部作用域搜索,若搜索成功則全部按照該函數的標準調用。若未搜索到才在全局作用域進行搜索。

總結:C語言不存在函數重載,C++根據函數名參數個數參數類型判斷重載,屬于靜多態,必須同一作用域下才叫重載。

7、const

C語言中被const修飾的變量不是常量,叫做常變量或者只讀變量,這個常變量是無法當作數組下標的。然而在C++中const修飾的變量可以當作數組下標使用,成為了真正的常量,這就是C++對const的擴展。

C語言中的const:被修飾后不能做左值,可以不初始化,但是之后沒有機會再初始化。不可以當數組的下標,可以通過指針修改。

簡單來說,它和普通變量的區別只是不能做左值而已,其他地方都是一樣的。

C++中的const:真正的常量。定義的時候必須初始化,可以用作數組的下標。const在C++中的編譯規則是替換(和宏很像),所以它被看作是真正的常量。也可以通過指針修改。需要注意的是,C++的指針有可能退化成C語言的指針。比如以下情況:

這時候的a就只是一個普通的C語言的const常變量了,已經無法當數組的下標了。(引用了一個編譯階段不確定的值)

const在生成符號時,是local符號。即在本文件中才可見。如果非要在別的文件中使用它的話,在文件頭部聲明:externcosnt int data = 10;這樣生成的符號就是global符號。

總結:C中的const叫只讀變量,只是無法做左值的變量;C++中的const是真正的常量,但也有可能退化成c語言的常量,默認生成local符號。

8、引用

說到引用,我們第一反應就是想到了他的兄弟:指針。

引用從底層來說和指針就是同一個東西,但是在編譯器中它的特性和指針完全不同。

首先定義一個變量a = 10,然后我們分別定義一個引用b以及一個指針p指向a。我們來轉到反匯編看看底層的實現:

可以看到底層實現完全一致,取a的地址放入eax寄存器,再將eax中的值存入引用b/指針p的內存中。至此我們可以說(在底層)引用本質就是一個指針。

了解了底層實現,我們回到編譯器。我們看到對a的值的修改,指針p的做法是*p = 20;即進行解引用后替換值。

再來看看引用修改:

我們看到修改a的值的方法也是一樣的,也是解引用。只是我們在調用的時候有所不同:調用p時需要*p解引用,b則直接使用就可以。由此我們 推斷出:引用在直接使用時是指針解引用。p直接使用則是它自己的地址。

這樣我們也了解了,我們給引用開辟的這塊內存是根本訪問不到的。如果直接用就直接解引用了。即使打印&b,輸出的也是a的地址。

在此附上將指針轉為引用的小技巧:int *p = &a,我們將 引用符號移到左邊 將 *替換即可:int &p = a。

接下來看看如何創建數組的引用:

intarray[10] = {0}//定義一個數組

我們知道,array拿出來使用的話就是數組array的首元素地址。即是int *類型。

那么&array是什么意思呢?int **類型,用來指向array[0]地址的一個地址嗎?不要想當然了,&array是整個數組類型。

那么要定義一個數組引用,按照上面的小訣竅,先來寫寫數組指針吧:

int(*q) [10] = &array;

將右側的&對左邊的*進行覆蓋:

int(&q)[10] = array;

測試sizeof(q) = 10。我們成功創建了數組引用。

經過上面的詳解,我們知道了引用其實就是取地址。那么我們都知道一個立即數是沒有地址的,即

int&b = 10;

這樣的代碼是無法通過編譯的。那如果你就是非要引用一個立即數,其實也不是沒有辦法:

constint &b = 10

即將這個立即數用const修飾一下,就可以了。為什么呢?

這時因為被const修飾的都會產生一個臨時量來保存這個數據,自然就有地址可取了。

9、malloc,free && new,delete

這個問題很有意思,也是重點需要關注的問題。malloc()和free()是C語言中動態申請內存和釋放內存的標準庫中的函數。而new和delete是C++運算符、關鍵字。new和delete底層其實還是調用了malloc和free。它們之間的區別有以下幾個方面:

1)、malloc和free是函數,new和delete是運算符。

2)、malloc在分配內存前需要大小,new不需要。

例如:

int *p1 = (int *)malloc(sizeof(int));
int *p2 = new int; //int *p3 = new int(10);

malloc時需要指定大小,還需要類型轉換。new時不需要指定大小因為它可以從給出的類型判斷,并且還可以同時賦初始值。

3)、malloc不安全,需要手動類型轉換,new不需要類型轉換。

4)、free只釋放空間,delete先調用析構函數再釋放空間(如果需要)。

與第⑤條對應,如果使用了復雜類型,先析構再call operator delete回收內存。

5)、new是先調用構造函數再申請空間(如果需要)。

與第④條對應,我們在調用new的時候(例如int *p2 = new int;這句代碼 ),底層代碼的實現是:首先push 4字節(int類型的大小),隨后call operator new函數分配了內存。由于我們這句代碼并未涉及到復雜類型(如類類型),所以也就沒有構造函數的調用。如下是operator new的源代碼,也是new實現的重要函數:

我們可以看到,首先malloc(size)申請參數字節大小的內存,如果失敗(malloc失敗返回0)則進入判斷:如果_callnewh(size)也失敗的話,拋出bad_alloc異常。_callnewh()這個函數是在查看new handler是否可用,如果可用會釋放一部分內存再返回到malloc處繼續申請,如果new handler不可用就會拋出異常。

6)、內存不足(開辟失敗)時處理方式不同。

malloc失敗返回0,new失敗拋出bad_alloc異常。

7)、new和malloc開辟內存的位置不同。

malloc開辟在堆區,new開辟在自由存儲區域。

8)、new可以調用malloc(),但malloc不能調用new。

new就是用malloc()實現的,new是C++獨有malloc當然無法調用。

10、作用域

C語言中作用域只有兩個:局部,全局。C++中則是有:局部作用域,類作用域,名字空間作用域三種。

所謂名字空間就是namespace,我們定義一個名字空間就是定義一個新作用域。訪問時需要以如下方式訪問(以std為例)

std::cin<<"123" <<std::endl;

例如我們有一個名字空間叫Myname,其中有一個變量叫做data。如果我們希望在其他地方使用data的話,需要在文件頭聲明:using Myname::data;這樣一來data就使用的是Myname中的值了。可是這樣每個符號我們都得聲明豈不是累死?

我們只要using namespace Myname;就可以將其中所有符號導入了。

這也就是我們經常看到的using namespace std;的意思啦。

不學C語言能直接學C++嗎?

還是像前面所說,C++編程語言的第一大重要組成部分就是「面向過程編程」,而這正是C語言老大哥的領域。即使沒有學過C語言,一上來就直接學習C++的小伙伴,應該也難逃『面向過程』這一部分的內容。

從理論上來說,學C++前并不一定非得學C語言,但是有C語言底子再去學C++往往更具優勢,最起碼「面向過程編程」這一部分內容能夠輕車熟路。

責任編輯:龐桂玉 來源: C語言與C++編程
相關推薦

2023-12-30 11:01:19

C語言C++編程

2011-04-11 09:43:25

C++C

2010-01-15 14:46:20

C++語言

2024-02-21 23:13:45

C++編程開發

2011-04-06 08:57:07

C++java多態

2020-06-17 12:22:44

C覆蓋重載

2010-01-15 17:38:37

C++語言

2010-01-28 15:22:12

C++嵌套類

2010-01-28 14:38:36

C++和C#、Java

2011-07-13 18:00:51

CC++VC

2024-06-28 10:04:09

2009-10-22 09:17:16

C++ CLR

2011-06-21 15:00:07

JAVAC++

2011-01-05 11:12:34

C++

2024-02-26 12:13:32

C++開發編程

2010-01-08 16:52:57

C++和C#

2023-09-04 11:00:54

CC++語言

2010-01-11 15:29:13

引用C++語言

2019-08-05 15:25:22

C語言數據庫Linux

2010-01-22 15:30:36

C++語言
點贊
收藏

51CTO技術棧公眾號

999成人网| 幼a在线观看| 国产亚洲毛片| 亚洲欧美在线磁力| 超碰在线公开97| 毛片网站在线免费观看| 国产成人啪午夜精品网站男同| 国内精品视频久久| 亚洲天堂岛国片| 狂野欧美xxxx韩国少妇| 污片在线观看一区二区| 亚洲一区二区三区加勒比| www久久久com| 天堂成人免费av电影一区| 久久精品国产久精国产思思| 一本加勒比波多野结衣| 老司机精品视频网| 亚洲一区二区av在线| 日韩精品福利视频| 亚洲欧美激情另类| 久久99国产精品麻豆| 91精品国产91| 免费看一级大片| 国产乱码精品一区二区亚洲| 欧美刺激午夜性久久久久久久| 国产成人无码av在线播放dvd| 中中文字幕av在线| 日本一区二区三区dvd视频在线| 国产伦理久久久| 97超碰人人草| 日韩黄色在线观看| 777午夜精品福利在线观看| 亚洲综合视频网站| jvid福利在线一区二区| 亚洲第一在线视频| 国产精欧美一区二区三区白种人| sis001欧美| 亚洲国产wwwccc36天堂| 最新国产精品久久| www.久久热.com| 91美女视频网站| 国产精品污www一区二区三区| 一区二区精品视频在线观看| 久久精品亚洲| 2023亚洲男人天堂| 亚洲日本韩国在线| 在线观看一区| 欧美风情在线观看| 国产探花在线播放| 中文字幕一区二区三区欧美日韩| 色老头一区二区三区在线观看| 国产呦小j女精品视频| 久久这里只有精品一区二区| 欧美精品一区男女天堂| av免费观看不卡| 7777精品| 亚洲国产精品成人av| 理论片大全免费理伦片| 精品亚洲精品| 亚洲精品久久久久国产| 国产又粗又长又爽| 美女主播精品视频一二三四| 亚洲国产精品va在线看黑人动漫 | 亚洲最新无码中文字幕久久| 午夜久久福利影院| 男女激情无遮挡| 在线免费av资源| 日韩欧美亚洲范冰冰与中字| 东京热加勒比无码少妇| 成人美女视频| 91九色最新地址| 中文字幕av不卡在线| www.一区| 91精品国产色综合久久不卡电影 | 国产激情精品一区二区三区| 欧美一区二区久久| 国产精九九网站漫画| 国产精品x8x8一区二区| 日韩精品在线观看视频| 国产精久久一区二区三区| 日韩欧美一区免费| 久久最新资源网| 久久久久久久黄色| 国产精品久久久久久久久久妞妞| 欧美在线免费观看| 五月婷婷六月婷婷| 麻豆成人免费电影| 超碰97在线人人| 日本高清中文字幕二区在线| 国产精品视频一区二区三区不卡| 日本女人高潮视频| 乱人伦视频在线| 欧美日韩精品系列| 捆绑凌虐一区二区三区| 日韩电影一区| 久久久免费观看| www.av88| 国产成人免费视频| 台湾成人av| 色综合999| 色婷婷av一区| 在线观看av免费观看| 日本成人中文| 久久国产视频网站| 潘金莲一级淫片aaaaaa播放| 日本电影全部在线观看网站视频| 国产毛片久久久| 国产亚洲一区二区精品| 午夜少妇久久久久久久久| 性高湖久久久久久久久| 91精品久久久久久久久久另类| 好吊色在线观看| 国产精品麻豆欧美日韩ww| 人人干视频在线| 久久精品国产福利| 亚洲国产精品人久久电影| 亚洲一二三四五六区| 国产日韩欧美一区在线| 51国产成人精品午夜福中文下载| 欧美女优在线| 亚洲一区二区在线免费看| 久久婷婷综合色| 夜夜春成人影院| 久久99精品国产99久久6尤物 | 在线综合欧美| 99国产在线视频| av网站无病毒在线| 色悠悠亚洲一区二区| 稀缺小u女呦精品呦| 91免费精品| 国产精品久久久久999| 午夜性色福利视频| 亚洲mv在线观看| 日本中文字幕精品| 亚洲国产精品91| 欧美日韩亚洲一区三区 | 欧美成人影院| 亚洲国产古装精品网站| 午夜写真片福利电影网| 蜜乳av一区二区| 视频一区二区综合| av一区在线播放| 亚洲欧洲国产伦综合| 亚洲国产成人精品激情在线| 国产suv精品一区二区6| 91精品国产吴梦梦| 国产精品国产三级在线观看| 日韩在线观看免费网站| 性高潮视频在线观看| 久久久久久麻豆| 人人干人人视频| 狠狠做六月爱婷婷综合aⅴ| 国产999精品久久久影片官网| 视频三区在线观看| 日韩欧美国产骚| 国产激情在线免费观看| 久久国产精品久久久久久电车| 久久青青草综合| 亚洲人体影院| 夜夜嗨av一区二区三区免费区| 一级久久久久久| 国产精品久线观看视频| 亚洲自拍第三页| 在线免费观看日本欧美爱情大片| 99在线高清视频在线播放| 男女羞羞视频在线观看| 日韩一级成人av| www.99re7.com| 97久久超碰国产精品电影| 国产高清精品在线观看| 免费观看久久av| 国产不卡av在线| 国产高清美女一级毛片久久| 欧美日韩一区二区欧美激情| 91九色丨porny丨极品女神| 国产成人福利片| 黄色一级视频片| 精品久久久久久久久久久下田| 国产欧美日韩精品丝袜高跟鞋| 国产一二区在线| 精品处破学生在线二十三| 中文字幕欧美专区| 免费一级特黄特色大片| 久久综合九色综合欧美亚洲| 亚洲另类第一页| 欧美午夜一区| 欧美日韩国产一二| 亚洲男人在线| 国内精品视频在线| 中文字幕在线视频区| 日韩一区二区免费视频| wwwwww国产| 日韩久久一区二区| 波多野结衣影院| 久久国产福利国产秒拍| 青青视频免费在线观看| 尤物tv在线精品| 91在线无精精品一区二区| 国产h片在线观看| 色综久久综合桃花网| 亚洲精品综合久久| 欧美性猛片aaaaaaa做受| 久久久久黄色片| 欧美国产一区二区在线观看| 中文在线字幕观看| 青青草国产成人99久久| 免费看毛片的网址| 久久久人成影片免费观看| 久久久亚洲综合网站| 日韩中文字幕在线一区| 国产精品久久久久久av| www.色在线| 久久久黄色av| 国产尤物视频在线| 亚洲精品福利资源站| 99久久久国产精品无码网爆| 在线精品视频免费播放| 久久9999久久免费精品国产| 国产精品灌醉下药二区| 国产一级二级在线观看| 国产高清视频一区| 久久撸在线视频| 香蕉精品999视频一区二区| 欧美一级中文字幕| 国产一区二区精品久| 精品国产免费久久久久久尖叫| 成人精品视频在线观看| 国产精品美女呻吟| 中文在线免费视频| 97色在线观看免费视频| 羞羞网站在线看| 久久激情五月丁香伊人| 91视频在线观看| 原创国产精品91| 玖玖综合伊人| 精品亚洲国产视频| 色欲av永久无码精品无码蜜桃| 日韩一区二区在线免费观看| 中文字幕日韩第一页| 91国偷自产一区二区三区成为亚洲经典| 青青草成人免费在线视频| 你懂得网站在线| 欧美不卡123| 国产ts变态重口人妖hd| 欧美伦理视频网站| 亚洲综合五月天婷婷丁香| 91国产免费看| 超碰在线97观看| 欧美午夜一区二区三区| 国产精品高清无码| 欧美视频你懂的| 中文精品久久久久人妻不卡| 在线观看区一区二| 国产美女www| 欧美人牲a欧美精品| 国产又粗又黄又爽| 欧美一区二区三区在线电影| 国产露脸91国语对白| 欧美精品vⅰdeose4hd| 国产女18毛片多18精品| 日韩一区二区三区免费看| 国产av一区二区三区精品| 日韩欧美美女一区二区三区| 性中国古装videossex| 欧美成人r级一区二区三区| 国产 欧美 自拍| 亚洲国产三级网| 欧美女同网站| 日韩在线观看网址| а√资源新版在线天堂| 欧美二区乱c黑人| 91av久久| 国产成人精品综合| 91精品视频一区二区| 亚洲最大的成人网| 久久a级毛片毛片免费观看| 久久久久久高清| 日韩av自拍| 欧美乱做爰xxxⅹ久久久| 国产女优一区| 一路向西2在线观看| 国产精品456| 国产美女喷水视频| 日韩毛片视频在线看| 国产亚洲精品女人久久久久久| 欧美日韩精品在线观看| 中文字幕在线视频第一页| 日韩欧美国产电影| 奇米影视888狠狠狠777不卡| 久久中文精品视频| 麻豆网站免费在线观看| 成人av.网址在线网站| 国产精品高潮呻吟久久久久| 日韩偷拍一区二区| 欧美啪啪一区| 毛葺葺老太做受视频| 国产精品综合久久| 99久久久久久久久久| 亚洲视频每日更新| 探花视频在线观看| 6080日韩午夜伦伦午夜伦| 午夜福利一区二区三区| 久久综合色影院| 国精产品一区二区三区有限公司| av一区二区三区四区电影| 欧洲福利电影| 丝袜人妻一区二区三区| 久久精品999| 97人妻天天摸天天爽天天| 亚洲欧美精品午睡沙发| 中文字幕一区二区人妻电影| 日韩欧美成人激情| jzzjzzjzz亚洲成熟少妇| 欧美极品美女视频网站在线观看免费 | 日韩成人综合网| 麻豆精品传媒视频| 国产一区欧美| 涩涩网站在线看| 久久久99精品久久| 日本五十路女优| 日韩午夜激情视频| 日本激情视频在线观看| 青青草国产精品一区二区| 成人知道污网站| 一级性生活视频| 九九热在线视频观看这里只有精品| 日本xxx在线播放| 亚洲午夜精品在线| 99国产揄拍国产精品| 在线视频免费一区二区| 亚洲精品福利电影| 久久久久久国产精品免费免费| 欧美日韩少妇| 色男人天堂av| 亚洲人成网站在线| 国产又粗又长视频| 日韩专区在线播放| 国产精品99精品一区二区三区∴| 蜜桃久久精品乱码一区二区 | 欧美精品色婷婷五月综合| 成人av免费网站| 国产精品111| 亚洲国产成人精品一区二区| 欧洲精品二区| 超碰97网站| 伊人狠狠色j香婷婷综合| 日韩精品国产一区| 一区二区三区在线视频观看| 国产乱码精品一区二三区蜜臂| 日韩在线播放av| 成人在线视频www| 国产内射老熟女aaaa| 国产精品一区二区久激情瑜伽| 国产极品国产极品| 日韩免费视频一区| caoprom在线| 精品无人区一区二区三区竹菊| 一区二区国产精品| 中国美女乱淫免费看视频| 一本到高清视频免费精品| 黄色在线视频观看网站| 国产精品一二三在线| 888久久久| 95视频在线观看| 婷婷丁香久久五月婷婷| 色吊丝在线永久观看最新版本| 日本精品久久中文字幕佐佐木| 国产在视频线精品视频www666| 五月婷婷深爱五月| 中文字幕五月欧美| 成人毛片在线精品国产| 2020久久国产精品| 日韩精品一卡| 无码人妻少妇色欲av一区二区| 亚洲国产aⅴ成人精品无吗| 色哟哟在线观看| 国产精品久久久久久久久男| 欧美好骚综合网| 青青草视频网站| 在线免费观看成人短视频| 国产一二三区在线观看| 国内一区二区三区在线视频| 丝袜美腿一区二区三区| 波多野结衣在线网址| 亚洲激情自拍图| 日韩欧美2区| 激情成人开心网| 久久久美女毛片| 99久久精品国产成人一区二区| 97精品国产91久久久久久| 精品国产成人| 18禁一区二区三区| 91国产丝袜在线播放| 欧美人与牲禽动交com| 欧洲视频一区二区三区| 国产乱子伦视频一区二区三区| 97人人澡人人爽人人模亚洲| 日韩一区二区精品视频| 欧美亚洲国产日韩| 手机av在线网站|