C 11新特性(8) 類內初始化

2021-08-18 14:34:34 字數 1315 閱讀 7954

重複的初始化**

考察下面的**:

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...