程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C++編程中的靜態成員與可變數據成員

詳解C++編程中的靜態成員與可變數據成員

編輯:關於C++

詳解C++編程中的靜態成員與可變數據成員。本站提示廣大學習愛好者:(詳解C++編程中的靜態成員與可變數據成員)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C++編程中的靜態成員與可變數據成員正文


靜態成員
類可以包括靜態成員數據和成員函數。當數據成員被聲明為“靜態”時,只會為類的一切對象保存一個數據正本。
靜態數據成員不是給定的類類型的對象的一部門。是以,靜態數據成員的聲明不被視為一個界說。在類規模中聲明數據成員,但在文件規模內履行界說。這些靜態類成員具有內部鏈接。上面的示例闡釋了這一點:

// 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 的值。
靜態數據成員遵守類成員拜訪規矩,是以只許可類成員函數和友元具有對靜態數據成員的公有拜訪權限。


可變數據成員
此症結字只能運用於類的非靜態和異常量數據成員。假如某個數據成員被聲明為 mutable,則從 const 成員函數為此數據成員賦值是正當的。
語法

mutable member-variable-declaration;

備注
例如,以下代碼在編譯時不會失足,由於 m_accessCount 已聲明為 mutable,是以可以由 GetFlag 修正,即便 GetFlag 是常量成員函數。

// mutable.cpp
class X
{
public:
  bool GetFlag() const
  {
   m_accessCount++;
   return m_flag;
  }
private:
  bool m_flag;
  mutable int m_accessCount;
};

int main()
{
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved