C++入門基礎知識(一)


一:關鍵字

  在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 中被引用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM