C 11類成員的初始化總結

2021-06-21 21:28:20 字數 1032 閱讀 1190

以前看到的c++98的文章:

c++為類中提供類成員的初始化列表。

類物件的構造順序是這樣的:

1.分配記憶體,呼叫建構函式時,隱式/顯示的初始化各資料成員

2.進入建構函式後在建構函式中執行一般計算

1.類裡面的任何成員變數在定義時是不能初始化的。

2.一般的資料成員可以在建構函式中初始化。

3.const資料成員必須在建構函式的初始化列表中初始化。

4.static要在類的定義外面初始化。   

5.陣列成員是不能在初始化列表裡初始化的。

6.不能給陣列指定明顯的初始化。  

這6條一起,說明了乙個問題:c++裡面是不能定義常量陣列的!因為3和5的矛盾。這個事情似乎說不過去啊?沒有辦法,我只好轉而求助於靜態資料成員或者使用列舉。

但是在c++11中,我們可以利用類內初始化:

int j = 15;

class

bclass

;int &b=j;

int &k = f;

static

int c;

static

const

int d=30;

static

const

float e;

public:

bclass()

;       注釋去掉有錯誤

//thesecondarray[20] = ;

} void print() };

intbclass::c = 20;

const

float

bclass::e = 40.0;

可以看到基本型別不用多說,可以在類內初始化。在這裡我們重點看const 與static,引用,以及陣列。

const  的int 與float都能在類內初始化。但是static還是只有static const int 能在類內初始化,其他的static 還是能在類外初始化。

而引用則可以在類內初始化。而無論是const 陣列還是非const 陣列,都不能在類內顯示初始化。

C 11中類資料成員初始化方法詳解

c 98為類中提供類成員的初始化列表。類物件的構造順序是這樣的 1.分配記憶體,呼叫建構函式時,隱式 顯示的初始化各資料成員 2.進入建構函式後在建構函式中執行一般計算 1.類裡面的任何成員變數在定義時是不能初始化的。2.一般的資料成員可以在建構函式中初始化。3.const資料成員必須在建構函式的初...

c 11 以類內成員函式初始化執行緒

更新,忘記當時寫的具體是啥了 大概就是下面這個意思 今天敲了這樣一段 簡化版本 include include include using namespace std class t void func int main 我在 1 的部分得到報錯 error invalid use of non s...

初始化C 類成員

問題 我的問題是關於初始化c 類成員的。我見過許多這樣的 包括在你的欄目中也見到過 csomeclass csomeclass x 0 y 1 而在別的什麼地方則寫成下面的樣子 csomeclass csomeclass x 0 y 1 我的一些程式設計師朋友說第二種方法比較好,但他們都不知道為什麼...