日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++基础语法复习(一):C++与C语言的区别,主要有这些!

發布時間:2025/3/15 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++基础语法复习(一):C++与C语言的区别,主要有这些! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

和C的區別:

1.概念:

C++ 是一種靜態類型的、編譯式的、通用的、大小寫敏感的、不規則的編程語言,支持過程化編程、面向對象編程和泛型編程。

C++ 被認為是一種中級語言,它綜合了高級語言和低級語言的特點。

C++的很多基礎語法跟C差不多。

2. 函數默認值:

C89標準的C語言不支持函數默認值,C++支持函數默認值,且需要遵循從右向左賦初始值。

3.函數重載:

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

C不有是因為編譯器在編譯的時候只會給函數重命名,所以在編譯器看來重載函數們都是一樣的(編譯器不知道該調用哪個)。C++的重載函數們生成的符號表是不一樣的(根據返回類型和參數類型數量等區分),所以可以搞函數重載.

4.const:

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

5.分配內存:

a. malloc()和free()是C語言中動態申請內存和釋放內存的標準庫中的函數。而new和delete是C++運算符。new和delete底層其實還是調用了malloc和free。

b. malloc時需要指定大小,還需要類型轉換。new時不需要指定大小因為它可以從給出的類型判斷,并且還可以同時賦初始值。(這也使得malloc不安全)

c. free只釋放空間,delete先調用析構函數再釋放空間(如果需要).同理,new也是先調用構造函數再申請空間。

d.?內存不足(開辟失敗)時處理方式不同。malloc失敗返回0,new失敗拋出bad_alloc異常。

e.?new和malloc開辟內存的位置不同。malloc開辟在堆區,new開辟在自由存儲區域。

6.作用域:

多了個名字空間(namespace),所謂名字空間就是namespace,我們定義一個名字空間就是定義一個新作用域。

7.布爾常量:

布爾常量共有兩個,它們都是標準的 C++ 關鍵字:

True 和 false,顧名思義就是對與錯。

(C里面都是讓程序員自己定義)

8.Lambda 函數:

C++11 提供了對匿名函數的支持,稱為 Lambda 函數(也叫 Lambda 表達式)。

Lambda 表達式把函數看作對象。Lambda 表達式可以像對象一樣使用,比如可以將它們賦給變量和作為參數傳遞,還可以像函數一樣對其求值。

Lambda 表達式本質上與函數聲明非常類似。

表達式例子:

[capture](parameters)->return-type{body}

[capture]:捕捉列表。捕捉列表總是出現在 lambda 表達式的開始處。事實上,[] 是 lambda 引出符。編譯器根據該引出符判斷接下來的代碼是否是 lambda 函數。捕捉列表能夠捕捉上下文中的變量供 lambda 函數使用。

(parameters):參數列表。與普通函數的參數列表一致。如果不需要參數傳遞,則可以連同括號 () 一起省略。

mutable:mutable 修飾符。默認情況下,lambda 函數總是一個 const 函數,mutable 可以取消其常量性。在使用該修飾符時,參數列表不可省略(即使參數為空)。

->return_type:返回類型。用追蹤返回類型形式聲明函數的返回類型。出于方便,不需要返回值的時候也可以連同符號 -> 一起省略。此外,在返回類型明確的情況下,也可以省略該部分,讓編譯器對返回類型進行推導。

{statement}:函數體。內容與普通函數一樣,不過除了可以使用參數之外,還可以使用所有捕獲的變量。 在 lambda 函數的定義式中,參數列表和返回類型都是可選部分,而捕捉列表和函數體都可能為空。

例子如下:

[](int x, int y){ return x < y ; }

[](int x, int y) -> int { int z = x + y;?return z + x; }

其實也不是很玄乎,匿名函數本質上就是個隨手用的函數,省去了定義的麻煩,直接用完就丟。也可以作為傳遞給某些應用,比如消息處理。

9.輸入輸出:

引用:https://www.runoob.com/cplusplus/cpp-basic-input-output.html

博客園:Parachute黑喵

學習C/C++編程知識,感覺自學C++有難度的同學,可以點擊C++編程,一起來交流學習!

總結

以上是生活随笔為你收集整理的C/C++基础语法复习(一):C++与C语言的区别,主要有这些!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。