1. 程式人生 > >C/C++中的const ,static

C/C++中的const ,static

不可 nbsp mutable 類外定義 int table 更改 stat 初始化

一、const

  在C++中:

  1、常對象:創建對象時添加const關鍵字,這個對象就不可以再修改,就有了常屬性,就意味著整個對象所有變量不能更改

  2、常對象不能調用普通函數,調用成員函數就相當於把對象的this指針給了他,就有被修改的風險

  3、常對象只能調用常函數(函數體前加關鍵字叫常函數),普通對象也能調用常函數,常函數就相當於對this指針添加了const屬性

  4、常函數與普通函數可以構成重載,不會沖突

  5、如果有成員確實需要修改,他又被const修飾,可以對成員添加一個關鍵字mutable,這樣即使是常對象調用了常函數依然可以修改成員

  C:

    const :常量,為變量保存添加一種保護,保護變量不能被顯示修改,提高程序的安全性,當程序沒必要修改參數值時,應該加const屬性;
    const 可以定義常量,const修改初始化過的全局變量就是常量;

二、static

  C++:靜態成員與靜態成員函數

    1、類成員被static修飾,就會存儲在bss段(此段是由編譯器存放的而且大小是固定的),在程序中動態的創建對象時它的靜態成員就無法創建,所有的類對象就共享一個靜態成員

    2、靜態成員只能在類中聲明不能在類中定義(必須在類外定義)  類型 類名::靜態成員名

    3、靜態成員就是聲明在類中的全局變量,在任何位置都可以使用  類名::靜態成員名 進行訪問

    4、靜態成員函數:類中的成員函數被static修飾後就變成靜態成員函數,所有成員共享一份靜態成員函數

    5、靜態成員函數不會傳遞this指針,不通過對象也能調用靜態成員函數 類名::靜態成員函數(參數)

  C:

    static
      修飾全局變量時,作用域會從整個程序變為他所在的.c文件內;
      1、靜態局部,塊:
        存儲位置會由棧改為靜態段;生命周期會改為從定義開始到程序結束;但是使用範圍不變;默認值為0;只能初始化一次;

    靜態函數:
      static int func(int num);
      static會把外部函數變為內存函數,只能在他所在的.c文件內;

      static修飾全局變量和函數的好處,可以防治與其他函數,變量重名沖突

C/C++中的const ,static