重複的初始化**
考察下面的**:
enum
linestyle;
class
rect
,top,
right,
bottom{}
,style
rect(int
l,int
t,int
r,int
b):left,
top,
right,
bottom
,style
rect(int
l,int
t,int
r,int
b,linestyle
ls):left,
top,
right,
bottom
,style
private:
inttop;
intleft;
intright;
intbottom;
linestyle
style;
};這算是正常不過的**,但是有乙個不算是問題的問題:初期值為預設值的資料報成員也需要在建構函式裡指定,感覺不好。
類內初始化
c++11中引入了類內初始化器,以減少建構函式和初始化**的數量。說起來挺玄,其實就是下面**中背景加亮的部分。
class
rect
,top,
right,
bottom
rect(int
l,int
t,int
r,int
b,linestyle
ls):left,
top,
right,
bottom
,style
private:
inttop;
intleft;
intright;
intbottom;
linestyle
style;
};類內初始化之後,建構函式只需要負責和預設值不同的部分就好,**精煉很多了。
作者觀點
有人說,改善都是懶人發起的,作者認為:有一部改善應該是強迫症發起的。
覺得本文有幫助?請分享給更多人。
C 11新特性之新型別與初始化
這是c 11新特性介紹,雖然現在來說有些不合時宜,但是也有一些有趣的地方。覺得麻煩的可以直接跳到最後哦!long long型別 c 11標準中新加入了long long型別屬性,占用空間不小於long型別。測試 如下 long large long max long long long large ...
C 11 列表初始化及類內初始化
c 11中,集合 列表 的初始化已經成為c 語言的乙個基本功能,這種初始化的方法被稱為 初始化列表 initializer list 例如 include include using namespace std int a int b vector int c map int,float d 這樣一...
c 11 以類內成員函式初始化執行緒
更新,忘記當時寫的具體是啥了 大概就是下面這個意思 今天敲了這樣一段 簡化版本 include include include using namespace std class t void func int main 我在 1 的部分得到報錯 error invalid use of non s...