[問題] function的{前加上:跟其他東西是甚麼意思

看板C_and_CPP作者時間15年前 (2010/02/02 13:55), 編輯推噓3(3012)
留言15則, 5人參與, 最新討論串1/3 (看更多)
遇到的問題: (題意請描述清楚) 有段code看不懂 主要是想問 :xxx(NULL) 這一段做了甚麼事? 是呼叫這建構子的時候會執行這段嗎? 如果是的話後面又為什麼要判斷xxx是否等於NULL? 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VS2008 有問題的code: (請善用置底文標色功能) 置底文連結掛了... class abc { public: abc(); byte* xxx; } abc::abc() : xxx(NULL) { if(xxx!=NULL) delete [] xxx; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.94

02/02 21:55, , 1F
initializer
02/02 21:55, 1F

02/02 21:56, , 2F
另外這段程式碼如果不是在 copy ctor 就該在 dtor
02/02 21:56, 2F

02/02 21:56, , 3F
不太可能會出現在 default ctor...
02/02 21:56, 3F

02/02 22:35, , 4F
樓上還沒睡醒...? XD
02/02 22:35, 4F

02/02 22:35, , 5F
還是說「if(xxx!=NULL) delete [] xxx;」這段只會出現在
02/02 22:35, 5F

02/02 22:36, , 6F
copy ctor 或 dtor 的意思?
02/02 22:36, 6F

02/02 22:36, , 7F
看來好像是這樣 XD
02/02 22:36, 7F

02/02 22:38, , 8F
請問copy ctor有甚麼特徵嗎 那段看起來就是普通的ctor
02/02 22:38, 8F

02/02 22:43, , 9F
出現在 copy ctor 的時候因為要取代原先的內容物,所以要
02/02 22:43, 9F

02/02 22:44, , 10F
先 delete 一次,然後再 new 一次;但不一定只能這樣做就
02/02 22:44, 10F

02/02 22:44, , 11F
是了。
02/02 22:44, 11F

02/03 00:53, , 12F
: xxx(NULL)這不是很矛盾嗎 這樣一定會設null if就沒用了吧
02/03 00:53, 12F

02/03 05:52, , 13F
這個預設就會是null 應該不用if去判斷吧?
02/03 05:52, 13F

02/03 05:53, , 14F
還是說 這個是直接copy其他有傳值的constructor來改的?
02/03 05:53, 14F

02/04 13:54, , 15F
不知道 我跟作者不熟 被迫要用他的class來用而已 囧
02/04 13:54, 15F
文章代碼(AID): #1BQ2xC3p (C_and_CPP)
文章代碼(AID): #1BQ2xC3p (C_and_CPP)