C++語言對C語言的擴充

1.新的數據類型bool
2.新的變量初始化方法,int x(1024);等價於int x = 1024;
3.變量隨用隨定義

4.IO方法,不用關注佔位符,不用關注數據類型,不易出錯。下面的幾幅圖展示了這種區別。









5.命名空間namespace

目的:解決標識符衝突,相當於Java中的package
6.引用類型
1)普通變量的引用
  int a = 3;

  int &b = a; // 引用必須初始化,且初始化以後不能再改變,其本質是常指針

  b = 10;

  效果:a與b指向同一塊內存空間,a的值變成了10
2)結構體的引用
   typedef struct{
       int x;
       int y;
   }Point;
   Point p1;
   Point &p = p1;
   p.x = 10;
   p.y = 20;
   cout<<p1.x<<p1.y<<endl;
   結果:10 20
3)指針類型的引用
   int a = 10;
   int *p = &a;
   int *&q = p;
   *q = 20;
   cout<<a<<endl;
   結果:a = 20
7.const關鍵字
1)const與基本數據類型
   const int x = 3;
   x = 5; // 錯誤,x不可改變
2)const與指針類型
   const int *p = NULL;等價於int const *p = NULL;

   int *const p =NULL;

   此時const還有各種用法,個人感覺這塊C++太麻煩了!各大IT公司筆試老是喜歡這麼搞!

   const char *pc = "abcd";  // 聲明指向常量的指針變量pc,它指向一個字符串常量

   pc[3] = 'x';  // 不合法

   pc = "efgh";  // 合法

   char* const pc = "abcd";  // 常指針

   pc[3] = 'x';  // 合法

   pc = "efgh";  // 不合法

   const char* const pc = "abcd";  // 指向常量的常指針

   pc[3] = 'x';  // 不合法

   pc = "efgh";  // 不合法

3)const與函數形參

   const修飾函數形參,用於保證實參在該函數內部不被改動

8.函數新特性
1)函數參數默認值
  void fun(int i,int j = 5,int k = 10);
  void fun(int i,int j = 5;int k); // 錯誤
  有默認參數值的參數必須在參數表的最右端
2)函數重載
   在同一個作用域下,函數名相同,但是參數個數、參數類型或者參數順序不同的函數之間叫重載
3)內聯函數
   內聯函數關鍵字:inline
   調用時執行代碼替換,執行效率高,但是是有條件的
9.內存管理
  申請內存用運算符new,釋放內存用運算符delete
  例:

  int *p = new int;

  *p = 5; //  可以合在一起,int *p = new int(5);

  delete p;

  int *arr = new int[10]; // 申請塊內存
  delete []arr;  // 釋放塊內存

  注意:申請內存要判斷是否成功,釋放內存要設空指針

  int *arr = new int[1024];

  // 一定要判斷一下

  if(arr == NULL){

         //  分配失敗

  }else{

       delete []arr;

       arr = NULL; // 一定要有,否則誤操作以後,後果很嚴重

  }

10.提供了字符串處理類string,注意區分於Java中的String類

發佈了42 篇原創文章 · 獲贊 65 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章