1. 程式人生 > >C++ const 和static的總結以及使用

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

局部變量 數值 功能 const 常量 指針 main this指針 同名 this

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

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

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

int a = 10;

void add()

{

static int a=0; //對該函數進行隱藏,只作用於該函數內

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的數值不一樣.

  

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