C++ 類中的static,const,及引用類型變量的初始化


注意:以下描述的幾種類型變量描述的都是類中的成員變量

一、解釋

  • static類型變量

    static表示的是靜態的。類的靜態成員函數、靜態成員變量是和類相關的,而不是和類的具體對象相關的。即使沒有具體對象,也能調用類的靜態成員函數和成員變量

               一般類的靜態函數幾乎就是一個全局函數,只不過它的作用域限於包含它的文件中和類中,和靜態函數類似,【---】

----------------------------------------------

  1. 用static可以為類類型的所有對象所共有,像是全局對象,但又被約束在類類型的名字空間中。static定義的靜態常量在函數執行后不會釋放其存儲空間。
  2. 可以實施封裝,將其放在private或protected區域中。
  3. static成員沒有this指針,它不是任何一個對象的組成部分,推薦用“類名::static成員名調用”。
  4. static成員函數聲明時應寫明static關鍵字,在定義時不能加static關鍵字。
  5. static數據成員聲明時應寫明static關鍵字,在定義時不能加static關鍵字。
  6. static成員函數不能使用const以修飾其不改變成員屬性。
  7. static成員函數不能使用virtual以修飾其虛擬性。
  8. static const數據成員可以在類中聲明並且初始化,然后在類定義之外再次進行定義;或者在類中聲明,但在類定義外進行定義。非const的static數據成員僅能在類中聲明,並在類定義之外進行定義。
  9. static成員函數主要目的是作為類作用域的全局函數。不能訪問類的非靜態數據成員。類的靜態成員函數沒有this指針,這導致:1、2、
    1) 不能直接存取類的非靜態成員變量,調用非靜態成員函數
    2) 不能被聲明為virtual
  •       const類型變量

    const定義的常量在超出其作用域之后其空間會被釋放,而static定義的靜態常量在函數執行后不會釋放其存儲空間。

  • 引用類型變量

    引用類型變量是其他變量的別稱,本身並不占用任何存儲空間,使用前必須要進行初始化

 

二、初始化方法

  • static類型變量
      在對應的源文件(.cpp文件)中初始化,格式如; int A::variable = 10
  • const類型變量
      只能在初始化列表中進行初始化
  • 引用類型變量
      只能在初始化列表中進行初始化

const數據成員 只在某個對象生存期內是常量,而對於整個類而言卻是可變的。因為類可以創建多個對象,不同的對象其const數據成員的值可以不同。要想建立在整個類中都恆定的常量,應該用類中的枚舉常量來實現,或者static cosnt。由此引入第四種類型變量--靜態常量,這種類型的變量初始化推薦和const類型變量的初始化方法一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM