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 什麼是函式過載
在同一作用域內,一組函式的函式名相同,引數列表不同(個數不同/型別不同),返回值可同可不同
例如:5.2 為什麼需要函式過載void func1(int a);
void func1(int a,double c);
int func1(double c,int a);
這幾個函式即為函式過載;和返回值無關,函式名相同,對應引數不同,引數個數也不相同
根據函式過載的定義可從函式過載的幾個特點來分析:
int add(int x, int y)
double add(double x, double y)
int add(int x, int y, double z)
int main()
結果:![](https://pic.w3help.cc/39a/f4571693073b5450a11a1285ac138.jpeg)
分析:
上述例子中存在函式過載,幾個add函式實現相同的功能,不會發生命名重複等諸多情況,都能得到相應的結果
5.3c++支援過載的原因
在說明這個問題之前,我們在linux下檢視同一段**分別用c語言編譯和c++編譯時的彙編**
**:
#include
int add(int
x,int
y)int main()
c語言:![](https://pic.w3help.cc/d6a/81cbfd54075b6aa15644086a2ec64.jpeg)
分析:
從上圖中可以看出,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 同一工程中允許存在多個相同名稱的明明空...