【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(查看反彙編命令)
指令可以查看編譯過程
總結:只要參數不同,函數出來的名字也不同,自然就不會衝突,在鏈接的過程中就可以找到