共用方式為


靜態資料成員 (C++)

類別可以包含靜態資料成員和成員函式。 當資料成員宣告為 static時,只有資料的複本進行類別的所有物件都會保留。(如需詳細資訊,請參閱 靜態成員函式 )。

靜態資料成員不屬於特定類別之物件的部分型別;它們是個別的物件。 因此,靜態資料成員的宣告不會定義。 資料成員在類別範圍中宣告的,不過,定義是在檔案範圍表現。 這些靜態成員具有外部連結。 下面這個範例可說明這點:

// static_data_members.cpp
class BufferedOutput
{
public:
   // Return number of bytes written by any object of this class.
   short BytesWritten()
   {
      return bytecount;
   }

   // Reset the counter.
   static void ResetCount()
   {
      bytecount = 0;
   }

   // Static member declaration.
   static long bytecount;
};

// Define bytecount in file scope.
long BufferedOutput::bytecount;

int main()
{
}

在上述程式碼中,成員 bytecount 在類別宣告,則為 BufferedOutput,但必須在類別宣告之外加以定義。

靜態資料成員可以參考,而不會參考類別型別物件。 使用 BufferedOutput 物件的位元組數目可以取得如下:

long nBytes = BufferedOutput::bytecount;

對於存在這個靜態的成員,但這不是必要的類別型別的所有物件存在。 使用成員選取 (.–>) 運算子,靜態成員也可以存取。 例如:

BufferedOutput Console;

long nBytes = Console.bytecount;

在上述情況中,不會評估物件的參考 (Console) ;傳回值是這個靜態物件 bytecount。

靜態資料成員是受類別成員存取規則規範,因此,對靜態資料成員的私用存取只允許類別成員函式和 friend。 這些規則會在 成員存取控制項中加以說明。 例外狀況是不管其存取限制,靜態資料成員在檔案範圍必須定義。 如果資料成員將明確初始化,必須提供初始設定式所定義。

靜態成員的型別未以類別名稱限定。 因此,BufferedOutput::bytecount 是 long

請參閱

參考

類別、結構和等位