c++ primer 上面的乙個例子:
// constref.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
class
constref
;constref::constref(int ii)
//constref::constref(int ii):i(ii),ci(i),ri(ii){}
int _tmain(int argc, _tchar* argv)
這樣寫是有錯誤的,error c2758: 「constref::ci」: 必須在建構函式基/成員初始值設定項列表中初始化;
constref::ri」: 必須在建構函式基/成員初始值設定項列表中初始化;
error c2166: 左值指定 const 物件; 而將
constref::constref(int ii)
使用constref::constref(int ii):i(ii),ci(i),ri(ii){} 替換 就正確了,你知道原因嗎?
記住:可以初始化const物件或引用型別的物件,但不能對他們賦值。在開始執行建構函式的函式體之前,必須完成初始化。初始化const或引用型別資料成員的唯一機會是在建構函式初始化列表中。
必須在建構函式基 成員初始值設定項列表中初始化
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 這樣寫是有錯誤...
類建構函式初始值列表
類的成員可以包括函式和成員變數,如果成員變數沒有顯示的初始化時,則應該最好對他們進行顯示的初始化,而不能靠他們的預設初始化,因為有些變數沒有預設初始值的。現在類成員初始化工作都是靠類的建構函式來完成,類中提供預設建構函式來提供初始化類成員功能,初始化類成員一般有兩種方式,即類成員定義時賦初始值和使用...
由C 建構函式初始值列表想到的
大家在編寫c 的時候,總是會遇到下面這個問題,什麼時候為建構函式提供初始值列表 當然,推薦做法都是以初始值列表代替建構函式體內賦值 資料成員初始化動作是在建構函式體之前的,相對應的,析構函式的資料成員銷毀動作是在析構函式體之後的。所常見的必須提供初始值列表的情況有,前面兩個比較好理解,const和引...