以前看到的c++98的文章:
c++為類中提供類成員的初始化列表。
類物件的構造順序是這樣的:
1.分配記憶體,呼叫建構函式時,隱式/顯示的初始化各資料成員
2.進入建構函式後在建構函式中執行一般計算
1.類裡面的任何成員變數在定義時是不能初始化的。
2.一般的資料成員可以在建構函式中初始化。
3.const資料成員必須在建構函式的初始化列表中初始化。
4.static要在類的定義外面初始化。
5.陣列成員是不能在初始化列表裡初始化的。
6.不能給陣列指定明顯的初始化。
這6條一起,說明了乙個問題:c++裡面是不能定義常量陣列的!因為3和5的矛盾。這個事情似乎說不過去啊?沒有辦法,我只好轉而求助於靜態資料成員或者使用列舉。
但是在c++11中,我們可以利用類內初始化:
int j = 15;可以看到基本型別不用多說,可以在類內初始化。在這裡我們重點看const 與static,引用,以及陣列。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 的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 我的一些程式設計師朋友說第二種方法比較好,但他們都不知道為什麼...