C++ const 和static的總結以及使用


一  static的使用 (作用域和存儲方式)

1.作用域---------->隱藏

靜態函數跟靜態全局變量的作用類似 (靜態函數不能被其它文件所用; 其它文件中可以定義相同名字的函數,不會發生沖突)

int a = 10;

   void add()

{

static int a=0;        //對該函數進行隱藏,只作用於該函數內,這個函數只執行一次,下次就不會再給a 進行賦值操作

printf("a = %d",a);

}

int main()

{

` a++;

add();

printf("a = %d",a);

}

結果 : a=0     a=10;

函數(static 里面不包含this指針)

a.靜態函數只能訪問靜態成員變量(不需要this指針)

b.靜態函數不能訪問普通成員函數,反之成立(靜態成員函數沒有this指針)

2. 存儲方式-------------->共有的(它的值會被保存,下次調用仍保持上一次數值)

a.局部變量 : 在該函數執行變量結束后,該變量不會被釋放,繼續保存

b.全局變量 : 表示當變量在全局內都可以訪問

c.類成員變量 : 表示這個變量為全類所有的(所有對象都公用這個變量,它不是某一個對象的私有的)

 

二   const的使用 (只具有讀的工能)

  1. const 常量:定義時就初始化,以后不能更改。
  2. const 形參:func(const int a){};該形參在函數里不能改變
  3. const修飾類成員函數:該函數對成員變量只能進行只讀操作
  4. 可以作為重載函數  void  func(Test  * const this(默認的)) const ---------=>void  func(const  Test * const this):這個函數只具有讀的功能,不能對對其變量進行修改

    因為this指針為常量,不能變化,它和static成員函數類似,普通函數可以訪問常成員函數,反之則不成立.常成員函數只能訪問常成員變量

三   不同點

static : 為靜態變量,只和類有關系,和對象無關,即使沒有對象也可以調用靜態函數和變量.

數據類型 類名::靜態數據成員名=值    int Test::a = 10;

const : 初始化必須有構造函數初始化,不同對象const的數值不一樣.

 

 

 

 

 


免責聲明!

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



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