※ 引述《journeyman@kkcity.com.tw (㊣科學秘招~雷電閃光~)》之銘言:
: ※ 引述《quota (我要出清)》之銘言:
: > 以下這一段語法是網路上的C++教學,
: > 內容是例外處理。
: > 我有一個疑問...
: > DivideByZero(int n, int d) : num(n), denom(d), message("Divide by zero") {}
: > 這裡的num(n)等這三個敘述,num()代表什麼呢?
: 這是constructor的簡寫嘛。
: 相當於
: DivideByZero(int n, int d)
: { num=n; denom=d; message="Divide by zero"; }
有一點差異,這是 initialization list,這才是真的初始化
journeyman大寫的方法,在 constructor 本體內指定初值,其實是 assignment,
不是真正的初始化,對於一些原生型別(int,bool,char,long....)效果其實沒差,
對於一些其他class的話,等於是呼叫default constructor後再做assignment,
對於效率可能會有衝擊,而對於 const data member 或是 reference
這更不可或缺,因為這些都有必須被立刻初始化,而後不能被assign的性質
:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.86.106.1
※ 編輯: cplusplus 來自: 219.86.106.1 (07/03 14:32)