精華區beta Programming 關於我們 聯絡資訊
※ 引述《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)