c++類中static、const、static const成員變量初始化

static成員變量

1、static成員變量和類相關聯,而非和類的對象相關連。換句話說就是不管生成多少個類的對象,類的static成員變量的副本只有一個。
2、類中static成員變量的初始化是在main函數之前進行的。(普通全局變量、靜態全局變量和類中的靜態成員變量都是在main函數之前進行初始化的)
3、具體類中static成員變量的初始化如下:類外的static成員變量初始化不加static關鍵字。
4、雖然static成員變量保存在全局空間內,生命週期也是全局的,但是,只在類的作用域內可以,超過作用域使用會出現錯誤。

class A {
private:
    static int a;
};
int A::a = 10;

const 成員變量

1、const成員變量只在某個對象生存期內是常量,但是對於整個類來說卻是可變的。
一個類可以創建多個對象,每個對象內的const成員變量可以是不同的,所以不能在類的const成員變量聲明的時候進行初始化,只能在類的構造函數中進行初始化。那麼也就是說必須給出類的構造函數。
2、初始化方式:構造函數函數初始化

class A {
public:
    A(int x):a(x) { }
private:
    const int a;
};

static const 成員變量

static const和const static寫法一樣

class Test
{
public:
      static const int mask1;
      const static int mask2;
};
const Test::mask1=0xffff;
const Test::mask2=0xffff;
//它們的初始化沒有區別,雖然一個是靜態常量一個是常量靜態。靜態都將存儲在全局變量區域,其實最後結果都一樣。可能在不同編譯器內,不同處理,但最後結果都一樣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章