命名空間 預設引數 函式過載 extern C

2021-10-18 13:22:13 字數 1845 閱讀 9923

2.預設引數

3.函式過載

4.extern c

c++中的類和庫中有大量的關鍵字,那麼我們定義變數的時候就很容易與這些系統關鍵字發生衝突,使用命名空間的目的就是為了避免與關鍵字發生衝突;

舉個簡單的例子,有人來學校找乙個叫張三的人,廣播出去後有非常多叫張三,這樣就導致了混淆,不知道你要找誰。但是你如果加個前提,我要找4年級3班1組1號的張三,這樣就不會發生衝突了;

同樣,為了避免這種命名衝突,我們在c++中引入命名空間,在特定的作用域中進行尋找就不會發生衝突了。

由上述可知命空間的定義,那麼我們怎麼使用呢?接下來介紹命名空間的3種使用方法

1.命名空間名稱以及作用域限定符

2.使用using將命名空間中成員引入

3.使用using namespace 命名空間名稱引入

預設引數是指,宣告或定義函式的時候為函式的引數指定乙個預設值,在呼叫該函式的時候,如果沒有指定實參則採用該預設值,否則使用指定的實參

預設引數分為全預設引數和半預設引數

半預設引數必須從右往左依次給出,不能間隔給;

預設引數不能在函式的命名和定義中同時出現,這是因為如果恰好兩個位置給的值不一樣,那麼編譯器就無法識別到底是使用哪個預設值;

預設值必須是常量或者全域性變數

c語言不支援(編譯器不支援)

函式過載是函式的一種特殊情況,c++允許在同一作用域內宣告幾個功能類似的同名函式,但是這些同名函式的形參列表(形參的個數或型別或順序)必須不同,常用來處理實現功能類似資料型別不同的問題;

在可執行程式執行之前,需要經過預處理,編譯,彙編,鏈結幾個階段;

在預處理階段進行去注釋,巨集替換,標頭檔案展開,條件編譯等等,在編譯階段編譯器將檢查**的規範性和語法,彙編階段是生成機器可識別的二進位制檔案,在鏈結階段才會用函式名(函式名即函式位址)去尋找對應的函式的實現;

有些時候我們在c++工程之中需要用將某些函式按照c的風格來進行編譯,比如我們將c++專案打包成了乙個動態庫,在後續用c語言去呼叫這個動態庫;

由上面函式過載可知,c++和c的函式編譯出來後,c的函式名是沒有被修飾的,c++的函式名會進行修飾,那麼我們用c就呼叫不了c++風格編寫的函式;

此時只要在函式前面加上extern c告訴編譯器,將這個函式按照c語言規則來進行編譯就可以解決函式名修飾規則不同的問題了;

c 命名空間 函式過載 預設引數

在c c 中,變數 函式和類都是大量存在的,這些變數 函式和類的名稱將都存在於全域性作用 域中,可能會導致很多衝突。使用命名空間的目的是對識別符號的名稱進行本地化,以 避免命名衝突或名字汙染,namespace 關鍵字的出現就是針對這種問題的。1.1 命名空間的定義 namespace n1 1.1...

C 命名空間 預設引數 函式過載

使用命名空間是要對識別符號的名稱進行本地初始化,避免命名衝突。定義命名空間需要用到namespace關鍵字,後跟命名空間的名字,在 內為命名空間的成員 普通的命名空間 namespace n1 巢狀的命名空間 namespace n2 namespace n3 同一工程中允許存在多個相同名稱的明明空...

c 函式過載 預設引數 命名空間的解析

1.c和c 的優缺點解析c語言屬於面向過程。優點是 效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源。缺點 沒有物件導向易維護 易復用 易擴充套件 c 屬於物件導向 優點是 易維護 易復用 易擴充套件,由於物件導向有封裝 繼承 多型性的特性,可以設計出低耦合的系統,使系統更加靈活 ...