知識點2:當(dāng)構(gòu)造函數(shù)委托給另一個構(gòu)造函數(shù)時,受委托的構(gòu)造函數(shù)的初始值列表及其函數(shù)體先被執(zhí)行,接著才會執(zhí)行到委托函數(shù)的函數(shù)體。
class OH{OH(string s, int a, int b):book(s),price(a),sale(b){cout<<"OH(string s, int a, int b)"<<endl;} //三參數(shù)構(gòu)造函數(shù)的參數(shù)列表和函數(shù)體首先被執(zhí)行OH():OH(" ",0,0);//默認(rèn)構(gòu)造函數(shù)又委托給了三參數(shù)構(gòu)造函數(shù)OH (istream& is):OH(){cout<<"OH (istream& is)"<<endl;}//OH (istream& is)是一個委托構(gòu)造函數(shù),它委托給了默認(rèn)構(gòu)造函數(shù)OH()string book;int price;int sale;};PS:41、42知識點為C++11特性
1:當(dāng)類的作用域內(nèi)不需要使用任何初始值定義非靜態(tài)變量時 2:當(dāng)類中含有需要使用默認(rèn)構(gòu)造函數(shù)當(dāng)作被委托構(gòu)造函數(shù)時 3:類的成員沒有在構(gòu)造函數(shù)初始值列表中顯示初始化時 知識點2:當(dāng)類中定義了其它類型的構(gòu)造函數(shù)時,最好提供一個默認(rèn)的構(gòu)造函數(shù),養(yǎng)成良好的習(xí)慣。 知識點3:類聲明對象是不需要加括號!加括號是聲明函數(shù)的。
OH oh();//不合法的實例化OH oh;//合法(a):錯誤,類本身不提供構(gòu)造函數(shù)時,編譯器會自動合成一個默認(rèn)構(gòu)造函數(shù) (b):錯誤,為成員提供默認(rèn)值的構(gòu)造函數(shù)也成為默認(rèn)構(gòu)造函數(shù) (c):錯誤,見43題知識點1 (d):錯誤,當(dāng)類沒有定義構(gòu)造函數(shù)時,才會默認(rèn)編譯器生成默認(rèn)構(gòu)造函數(shù)。
知識點2:通過一個實參調(diào)用的構(gòu)造函數(shù)定義了一條從構(gòu)造函數(shù)的參數(shù)類型向類類型隱式轉(zhuǎn)換的機制 知識點3:可以將構(gòu)造函數(shù)聲明為explicit加以限定該類型轉(zhuǎn)換
優(yōu)缺點:這樣的隱式類型轉(zhuǎn)換只能作用于單參數(shù)的構(gòu)造函數(shù),但是相較于兩步的顯示轉(zhuǎn)換,這樣的隱式轉(zhuǎn)換則會省去很多麻煩
因為皆顯示地聲明了屬于Salesdata類
(a)合法 (b)不合法,Salesdata&類型與Salesdata類型之間不可轉(zhuǎn)換 (c)不合法,const不對,因為combine本身是需要改變傳入?yún)?shù)的
新聞熱點
疑難解答
圖片精選