課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之封裝篇(上)
private: ?const double m_dPi = 3.14;這樣寫合法嘛?合法的話是不是就不需要初始化列表了
2018-05-13
源自:C++遠(yuǎn)征之封裝篇(上) 6-4
正在回答
不合法,private下是定義數(shù)據(jù)成員的,一般不賦值
qq_大巫師_0
類內(nèi)成員變量一般有如下四種:
1、一般變量(int)
2、靜態(tài)成員變量(static int)
3、常量(const int )
4、靜態(tài)常量(static const int)
對(duì)應(yīng)初始化方式如下:
1、一般變量可以在初始化列表里或者構(gòu)造函數(shù)里初始化,不能直接初始化或者類外初始化
2、靜態(tài)成員變量必須在類外初始化
3、常量必須在初始化列表里初始化
4、靜態(tài)常量必須只能在定義的時(shí)候初始化(定義時(shí)直接初始化)
回到樓主的問題上,這種成員變量應(yīng)該是屬于第三種,也就是必須在初始化列表里初始化。
但是如果你代碼這么寫的話,編譯也可以通過(vs2017),但是使用效果上是有區(qū)別的。
在定義時(shí)直接初始化const常量的話,用這個(gè)類實(shí)例化出來的每個(gè)對(duì)象中的const常量都是同一個(gè)數(shù)值,而如果是通過初始化列表來初始化的話,const常量的值取決于實(shí)例化時(shí)傳給const常量的初始化值。
也就是說,樓主說的這種的情況的話最好使用第四種成員變量形式。
舉報(bào)
封裝--面向?qū)ο蟮幕?,本教程力求幫助小伙伴們即學(xué)即會(huì)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-07-29
不合法,private下是定義數(shù)據(jù)成員的,一般不賦值
2018-05-13
類內(nèi)成員變量一般有如下四種:
1、一般變量(int)
2、靜態(tài)成員變量(static int)
3、常量(const int )
4、靜態(tài)常量(static const int)
對(duì)應(yīng)初始化方式如下:
1、一般變量可以在初始化列表里或者構(gòu)造函數(shù)里初始化,不能直接初始化或者類外初始化
2、靜態(tài)成員變量必須在類外初始化
3、常量必須在初始化列表里初始化
4、靜態(tài)常量必須只能在定義的時(shí)候初始化(定義時(shí)直接初始化)
回到樓主的問題上,這種成員變量應(yīng)該是屬于第三種,也就是必須在初始化列表里初始化。
但是如果你代碼這么寫的話,編譯也可以通過(vs2017),但是使用效果上是有區(qū)別的。
在定義時(shí)直接初始化const常量的話,用這個(gè)類實(shí)例化出來的每個(gè)對(duì)象中的const常量都是同一個(gè)數(shù)值,而如果是通過初始化列表來初始化的話,const常量的值取決于實(shí)例化時(shí)傳給const常量的初始化值。
也就是說,樓主說的這種的情況的話最好使用第四種成員變量形式。