C 知識點 命名空間 預設引數 過載

2021-08-17 04:39:19 字數 1922 閱讀 2349

1.什麼是c++?

2. c++與c語言的差異

3. c++中的命名空間例:

namespace

s1namespace

s2int main()

4.預設引數
int add1(int x, int y, int z)//沒有預設值

int add2(int x, int y, int z = 3)//半預設

int add3(int x = 1, int y = 2, int z = 3)//全預設

int add4(int x, int y = 2, int z)//錯誤

int main()

5.1 什麼是函式過載

在同一作用域內,一組函式的函式名相同引數列表不同(個數不同/型別不同),返回值可同可不同

例如:

void func1(int a);

void func1(int a,double c);

int func1(double c,int a);

這幾個函式即為函式過載;和返回值無關,函式名相同,對應引數不同,引數個數也不相同

5.2 為什麼需要函式過載

根據函式過載的定義可從函式過載的幾個特點來分析:

int add(int x, int y)

double add(double x, double y)

int add(int x, int y, double z)

int main()

結果:

分析:

上述例子中存在函式過載,幾個add函式實現相同的功能,不會發生命名重複等諸多情況,都能得到相應的結果

5.3c++支援過載的原因

在說明這個問題之前,我們在linux下檢視同一段**分別用c語言編譯和c++編譯時的彙編**

**:

#include

int add(int

x,int

y)int main()

c語言:

分析:

從上圖中可以看出,c++在呼叫函式時add函式名已經改變<_z3addii>, 不僅僅是函式名,還有引數的型別,而c語言呼叫時add函式名< add >沒有改變

c語言中乙個函式就是乙個位址,即使引數不同,也是相同的位址,編譯器不能識別,故而c語言中沒有過載函式的概念

c++中乙個函式名可有多個位址,當引數不同時,位址也不相同,編譯器可根據不同的位址去呼叫對應的函式來完成函式的功能,因此c++中支援函式過載的概念

綜上所述:c++能夠支援過載是因為他有自己的函式名修飾規則,在編譯時可以識別相同函式名,不同引數列表的函式

C 基礎知識(命名空間 過載 預設引數)

一 型別分類 型別分類 基礎型別 自定義型別 二 命名空間 1.命名空間相當於全域性域,用 括起來乙個檔案,用namespace給這個檔案命名。std是c 庫里的檔案,它的使用有兩種方法,一種是using namespace std,一種是std cout 2.c語言中1個域無法對乙個變數進行多次定...

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

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

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

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