【C++入門(一)】(關鍵字,命名空間,缺省參數,函數重載)

1.關鍵字

C++總計63個關鍵字
在這裏插入圖片描述

2.命名空間

在C/C++中,變量、函數和類都是大量存在的,這些變量、函數和類的名稱將都存在於全局作用域中,可能會導致很多衝突。

使用命名空間的目的是對標識符的名稱進行本地化,以避免命名衝突或名字
污染,namespace關鍵字的出現就是針對這種問題的

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

命名空間三種表達方式

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
一個命名空間就定義了一個新的作用域,命名空間中的所有內容都侷限於該命名空間中


3.缺省參數

缺省參數是聲明或定義函數時爲函數的參數指定一個默認值。在調用該函數時,如果沒有指定實參則採用該默認值,否則使用指定的實參
在這裏插入圖片描述

缺省參數的分類

全缺省參數
在這裏插入圖片描述

半缺省參數
在這裏插入圖片描述

注意:
半缺省參數必須從右往左依次來給出,不能間隔着給
缺省參數不能在函數聲明和定義中同時出現
在這裏插入圖片描述


4.函數重載

概念

函數重載:是函數的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名函數,這些同名函數的形參列表( 參數個數 或 類型 或 順序)必須不同,常用來處理實現功能類似數據類型不同的問題

  • 個人理解:函數雖同名,但是多功能,彌補了C語言不能命名同名函數的缺陷
    在這裏插入圖片描述

面試題:爲什麼函數重載C++可以,C語言不可以?(詳解)

  • 首先一個C/C++程序運行起來要經理以下幾個階段:預處理、編譯、彙編、鏈接
    在這裏插入圖片描述
    在這裏插入圖片描述
    如果只有申明,沒有定義,就會找不到
    在這裏插入圖片描述
    接下來我們在Linux裏演示一下
    首先寫一個C程序
    在這裏插入圖片描述
    結果是無法編譯的
    在這裏插入圖片描述
    我們再通過objdump -S test1c(查看反彙編命令)指令可以查看編譯過程
    在這裏插入圖片描述
    如果有同名函數的話,我們就無法知道到底調的是哪一個add函數
    在這裏插入圖片描述
    我們再寫一個C++程序
    在這裏插入圖片描述
    我們再通過objdump -S test2cpp(查看反彙編命令)指令可以查看編譯過程
    在這裏插入圖片描述
    總結:只要參數不同,函數出來的名字也不同,自然就不會衝突,在鏈接的過程中就可以找到

















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章