精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

如意 ? 來源:CSDN ? 作者:cherrydreamsover ? 2020-06-29 14:56 ? 次閱讀

在學習了C語言C++之后,這兩者之間的區別我們需要仔細的捋一捋!

一、面向過程語言和面向對象語言

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

1.面向過程和面向對象的區別

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

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

舉個例子:(玩五子棋)

(1)用面向過程的思想來考慮就是:開始游戲,白子先走,繪制畫面,判斷輸贏,輪到黑子,繪制畫面,判斷輸贏,重復前面的過程,輸出最終結果。

(2)用面向對象的思想來考慮就是:黑白雙方(兩者的行為是一樣的)、棋盤系統(負責繪制畫面)、規定系統(規定輸贏、犯規等)、輸出系統(輸出贏家)。

面向對象就是高度實物抽象化(功能劃分)、面向過程就是自頂向下的編程(步驟劃分)

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

在學習一些比較抽象的概念時,由于我們的理解能力很有限,有時候一些比較恰當的例子也是有助于我們學習的,因此對二者的優缺點比較,還是先舉例子,后總結吧!

(1)用面向過程寫出來的程序就像一份蛋炒飯,也就是米飯和炒的菜均勻的混合在了一起,因此蛋炒飯入味均勻,不會像蓋澆飯那樣,可能有時候吃的菜多飯少,還有時候菜少飯多。但是如果你不喜歡吃蛋炒飯,只想吃肉炒飯,那么原來做的這份蛋炒飯就得倒掉了,重新做一份肉炒飯,廚師就得辛苦了!

(2)用面向對象寫出來的程序就像一份蓋澆飯,也就是米飯和蓋菜分別做好,將蓋菜放在米飯上面,蓋澆飯雖然沒有蛋炒飯那樣入味均勻,但是如果給了你一份土豆絲蓋飯,你又不想吃了,換成牛肉蓋飯,廚師只需要將米飯上面的土豆絲倒掉,重新做一份牛肉放在上面就好了。

那么到底蛋炒飯和蓋澆飯哪個好吃呢?

我覺得各有優劣,誰也不能說到底哪個好,畢竟蛋炒飯的餐館和蓋澆飯的餐館都很多,而且生意都很不錯,存在即為合理!

如果非要將二者進行一個高地的比較的話,那就得先設定一個場景了!

蓋澆飯的好處就是”菜”“飯”分離,從而提高了制作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用專業術語來說就是”可維護性“較好,”飯” 和”菜”的耦合度比較低。

蛋炒飯將”蛋”“飯”攪和在一起,想換”蛋”“飯”中任何一種都很困難,耦合度很高,以至于”可維護性”比較差。

基于上述的例子,二者的優劣總結如下:

面向過程語言

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

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

面向對象語言:

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

缺點:性能比面向過程低

二、具體語言的區別

1.關鍵字不同

C99有32個關鍵字

C++98有63個關鍵字

一些關鍵字的細微區別:

(1)struct:在C語言中struct定義的變量中不能有函數,而在C++中可以有函數。

(2)malloc :malloc函數的返回值為void*,在C語言中可以賦值給任意類型的指針,在C++中必須強制類型轉換,否則報錯。

(3)struct和class:class是對struct的擴展,struct默認的訪問權限是public,而class默認的訪問權限是private。

2.后綴名不同

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

3.返回值

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

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

4.參數列表

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

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

5.缺省參數

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

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

(1)半缺省參數

void FunTest(int _iParam1, int _iParam2 = 0 )

{}

void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)

{}

void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)

{}

(2)全缺省參數

void FunTest(int _iParam1 = 0, int _iParam = 1)

{ }

//注意:慎用缺省函數,否則會產生二義性

void FunTest ()

{}

void FunTest (int a = 10 )

{}

//假如使用不帶實參方式調用FunTest()函數時,編譯器將不知道調用哪一個,產生二義性

注意:

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

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

(3)缺省值必須是常量或者全局變量。

(4)缺省參數必須通過值參或常參傳遞。

6.函數重載

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

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

來看個例子:

//下面兩個函數算函數重載嗎?

void FunTest6()

{ } int

FunTest6()

{

return 0;

}

//答案是不能,因為僅僅返回值類型不同,不能構成重載

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136251
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73503
  • 面向對象
    +關注

    關注

    0

    文章

    64

    瀏覽量

    9978
收藏 人收藏

    評論

    相關推薦

    C語言和C++中那些不同的地方

    ++11標準。根據不同的標準,它們的功能也會有所不同,但是越新的版本支持的編譯器越少,所以本文在討論的時候使用的C語言標準是C89,C++標準是C
    的頭像 發表于 12-07 14:29 ?918次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言和</b><b class='flag-5'>C++</b>中那些不同的地方

    MCS的C語言和標準C語言區別

    MCS的C語言和標準C語言區別MC9S12的C語言
    發表于 07-20 07:06

    C語言和C++編程的一些思考資料說明

    1、其實高級語言和面向過程的語言最求的目標都是一致的,高可復用性,另外,封裝性。我發現自己在寫C語言的時候,總是不自覺地就引入了高級語言的一
    發表于 05-09 18:16 ?1次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言和</b><b class='flag-5'>C++</b>編程的一些思考資料說明

    MATLAB 64位C語言和C++編譯器應用程序免費下載

    本文檔的主要內容詳細介紹的是MATLAB 64位C語言和C++編譯器應用程序免費下載。
    發表于 05-21 08:00 ?4次下載
    MATLAB 64位<b class='flag-5'>C</b><b class='flag-5'>語言和</b><b class='flag-5'>C++</b>編譯器應用程序免費下載

    使用C語言和C++編寫俄羅斯方塊的資料和源代碼免費下載

    本文檔的主要內容詳細介紹的是使用C語言和C++編寫俄羅斯方塊的資料和源代碼免費下載。
    發表于 06-10 08:00 ?4次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言和</b><b class='flag-5'>C++</b>編寫俄羅斯方塊的資料和源代碼免費下載

    詳談數組和指針的區別聯系

    詳談數組和指針的區別聯系
    的頭像 發表于 06-29 15:18 ?2.2w次閱讀
    <b class='flag-5'>詳談</b>數組和指針的<b class='flag-5'>區別</b>與<b class='flag-5'>聯系</b>

    C語言和C++的特點與用法詳細說明

    本文檔的主要內容詳細介紹的是C語言和C++的特點與用法詳細說明。
    的頭像 發表于 12-26 10:58 ?4370次閱讀

    嵌入式程序開發,C語言和C++究竟應該用哪個?

    用?C++更好用?小明是一名嵌入式軟件工程師,他擅長C語言和C++編程,現在需要在一款提供C++C
    發表于 11-03 14:21 ?60次下載
    嵌入式程序開發,<b class='flag-5'>C</b><b class='flag-5'>語言和</b><b class='flag-5'>C++</b>究竟應該用哪個?

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

    首先C++C語言本來就是兩種不同的編程語言,但C++確實是對C
    的頭像 發表于 06-20 11:28 ?4901次閱讀

    如何選擇創建c語言和c++

    選擇創建 C 語言和 C++ 都需要綜合考慮多個因素。在決定使用哪種語言之前,我們需要對這兩種語言的特點、優缺點、適用場景、學習成本等進行全
    的頭像 發表于 11-27 15:58 ?573次閱讀

    vb語言和c++語言區別

    VB語言和C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設計和用途上有很多區別
    的頭像 發表于 02-01 10:20 ?2084次閱讀

    c語言,c++,java,python區別

    C語言C++、Java和Python是四種常見的編程語言,各有優點和特點。 C語言
    的頭像 發表于 02-05 14:11 ?2262次閱讀

    plc編程語言c語言聯系 c語言和PLC有什么區別

    語言,主要用于開發各種應用程序。盡管PLC編程語言和C語言有一些相似之處,但它們之間也存在一些明顯的區別。 首先,PLC編程
    的頭像 發表于 02-05 14:21 ?3901次閱讀

    PLC編程語言和C語言區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯著的區別
    的頭像 發表于 06-14 17:11 ?2566次閱讀

    C語言和C++中結構體的區別

    同樣是結構體,看看在C語言和C++中有什么區別
    的頭像 發表于 10-30 15:11 ?150次閱讀