C/C++——static用法完整總結

readyao發表於2016-05-08
  • static在類外部使用
1、static修飾全域性變數,限制全域性變數的作用域,僅僅限於該檔案。
2、static修飾區域性變數,儲存位置從堆疊段轉移到了data段的rw段或bss段。生命週期變為和整個程式的生命週期一樣了。

  • static在類內部使用
用來實現同一個類的所有物件的資料共享。

class A()
{
private:
      int num;
      static int shareVal;//該變數為static變數
};

在生成物件的時候類中的普通資料成員才開闢空間,而static成員變數在類宣告的時候已經為該變數開闢了空間(在data段的rw段)。
static既屬於類,也屬於物件。

類內定義,類外初始化,int A::shareVal = 100;//初始化

呼叫:
類名::static變數
物件名.static變數

  • static類成員函式
為了管理靜態成員,c++提供了靜態成員函式,以對外提供介面。
如果static成員變數為private,則只能通過靜態成員函式訪問該static變數。

呼叫:
類名::static函式
物件名.static函式

總結:
1、靜態成員函式的意義,不在於資訊共享,資料溝通,而在於管理靜態資料成員,完成對靜態資料成員的封裝。
2、靜態成員函式只能訪問靜態資料成員,不能訪問非static資料成員和非static成員函式。原因:非靜態成員函式,在呼叫時 this指針時被當作引數傳進。而靜態成員函式屬於類,而不屬於物件,沒有 this 指標。

相關文章