一:關鍵字
在C語言中,我們已經學習過了很多的關鍵字,例如:static,struct等,下面展現一下C++中的一些關鍵字。
二:命名空間
在C/C++中,變量、函數和類都是大量存在的,這些變量、函數和類的名稱將都存在於全局作用域中,可能會導致很多沖突。使用命名空間的目的是對標識符的名稱進行本地化,以避免命名沖突或名字污 染,namespace關鍵字的出現就是針對這種問題的
定義:需要使用到 namespace 關鍵字,后面跟命名空間的名字,然后接一對{ }即可,{ }中即為命名空間的成員。
1. 普通的命名空間 :
1 namespace N1 // N1為命名空間的名稱
2 { 3 // 命名空間中的內容,既可以定義變量,也可以定義函數
4 int a; 5 int Add(int left, int right) 6 { 7 return left + right; 8 } 9 }
2. 命名空間可以嵌套
1 namespace N2 2 { 3 int a; 4 int b; 5 int Add(int left, int right) 6 { 7 return left + right; 8 } 9
10 namespace N3 11 { 12 int c; 13 int d; 14 int Sub(int left, int right) 15 { 16 return left - right; 17 } 18 } 19 }
3. 同一個工程中允許存在多個相同名稱的命名空間,編譯器后會合成同一個命名空間中。
1 namespace N1 // N1為命名空間的名稱
2 { 3 // 命名空間中的內容,既可以定義變量,也可以定義函數
4 int a; 5 int Add(int left, int right) 6 { 7 return left + right; 8 } 9 } 10 namespace N1 11 { 12 int Mul(int left, int right) 13 { 14 return left * right; 15 } 16 }
注意:一個命名空間就定義了一個新的作用域,命名空間中的所有內容都局限於該命名空間中
命名空間的使用:
命名空間的使用有三種方式:
- 加命名空間名稱及作用域限定符
1 int main() 2 { 3 printf("%d\n", N::a); 4 return 0; 5 }
- 使用using將命名空間中成員引入
1 using N::b; 2 int main() 3 { 4 printf("%d\n", N::a); 5 printf("%d\n", b); 6 return 0; 7 }
- 使用using namespace 命名空間名稱引入
1 using namespce N; 2 int main() 3 { 4 printf("%d\n", N::a); 5 printf("%d\n", b); 6 Add(10, 20); 7 return 0; 8 }
三:輸入/輸出
1. 使用cout標准輸出(控制台)和cin標准輸入(鍵盤)時,必須包含< iostream >頭文件以及std標准命名空 間。
注意:早期標准庫將所有功能在全局域中實現,聲明在.h后綴的頭文件中,使用時只需包含對應頭文件即可, 后來將其實現在std命名空間下,為了和C頭文件區分,也為了正確使用命名空間,
規定C++頭文件不帶.h;舊 編譯器(vc 6.0)中還支持<iostream.h>格式,后續編譯器已不支持,因此推薦使用<iostream>+std的方式。
2. 使用C++輸入輸出更方便,不需增加數據格式控制,比如:整形--%d,字符--%c
1 #include <iostream>
2 using namespace std; 3
4 int main() 5 { 6 int a; 7 double b; 8 char c; 9
10 cin>>a; 11 cin>>b>>c; 12
13 cout<<a<<endl; 14 cout<<b<<" "<<c<<endl; 15
16 return 0; 17 }
四:缺省參數
1.概念:(簡單的來說就是備胎)
缺省參數是聲明或定義函數時為函數的參數指定一個默認值。在調用該函數時,如果沒有指定實參則采用該默 認值,否則使用指定的實參。
1 void TestFunc(int a = 0) 2 { 3 cout<<a<<endl; 4 } 5
6 int main() 7 { 8 TestFunc(); // 沒有傳參時,使用參數的默認值
9 TestFunc(10); // 傳參時,使用指定的實參
10 }
2.缺省參數的分類
- 全缺省參數
傳入的參數有多個,且參數都會指定一個默認值。
- 半缺省參數
傳入的參數有多個,但參數不一定都有默認值。
這里需要注意一下:
1.半省參數的默認值必須從右往左一次給出,不能間隔
2.缺省參數不能在函數聲明和定義中同時出現
五:函數的重載
1.是函數的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名函數,這些同名函數的形參列表(參數個數 或 類型 或 順序)必須不同,常用來處理實現功能類似數據類型不同的問題(這也是C++與C語言的最重要區別)
詳細請看C++中函數 重載詳解https://www.cnblogs.com/cuckoo-/p/10789222.html
2.extern "C"
如果你在C++的工程中,需要將某些函數按照C的風格來編譯。則需要在函數前加上 extern "C",在告訴編譯器,按照C風格的編譯方式編譯。
1 extern "C" int Add(int left, int right); 2
3 int main() { 4 Add(1,2); 5 return 0; 6 }
鏈接時報錯:error LNK2019: 無法解析的外部符號_Add,該符號在函數 _main 中被引用