必須在建構函式基 成員初始值設定項列表中初始化

2021-09-12 07:16:30 字數 596 閱讀 9227

c++ primer 上面的乙個例子: 

#include "stdafx.h"

class constref;

constref::constref(int ii)

//constref::constref(int ii):i(ii),ci(i),ri(ii){}

int _tmain(int argc, _tchar* ar**)

這樣寫是有錯誤的,error c2758: 「constref::ci」: 必須在建構函式基/成員初始值設定項列表中初始化;

constref::ri」: 必須在建構函式基/成員初始值設定項列表中初始化;

error c2166: 左值指定 const 物件;

使用如下替換建構函式就正確了

constref::constref(int ii)

:i(ii),ci(i),ri(ii)

{}

因為:可以初始化const物件或引用型別的物件,但不能對他們賦值。在開始執行建構函式的函式體之前,必須完成初始化。初始化const或引用型別資料成員的唯一機會是在建構函式初始化列表中。

必須在建構函式基 成員初始值設定項列表中初始化

c primer 上面的乙個例子 constref.cpp 定義控制台應用程式的入口點。include stdafx.h class constref constref constref int ii constref constref int ii i ii ci i ri ii int tmai...

類建構函式初始值列表

類的成員可以包括函式和成員變數,如果成員變數沒有顯示的初始化時,則應該最好對他們進行顯示的初始化,而不能靠他們的預設初始化,因為有些變數沒有預設初始值的。現在類成員初始化工作都是靠類的建構函式來完成,類中提供預設建構函式來提供初始化類成員功能,初始化類成員一般有兩種方式,即類成員定義時賦初始值和使用...

由C 建構函式初始值列表想到的

大家在編寫c 的時候,總是會遇到下面這個問題,什麼時候為建構函式提供初始值列表 當然,推薦做法都是以初始值列表代替建構函式體內賦值 資料成員初始化動作是在建構函式體之前的,相對應的,析構函式的資料成員銷毀動作是在析構函式體之後的。所常見的必須提供初始值列表的情況有,前面兩個比較好理解,const和引...