看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 有段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
LPH66:initializer 02/02 21:55
LPH66:另外這段程式碼如果不是在 copy ctor 就該在 dtor 02/02 21:56
LPH66:不太可能會出現在 default ctor... 02/02 21:56
tinlans:樓上還沒睡醒...? XD 02/02 22:35
tinlans:還是說「if(xxx!=NULL) delete [] xxx;」這段只會出現在 02/02 22:35
tinlans:copy ctor 或 dtor 的意思? 02/02 22:36
tinlans:看來好像是這樣 XD 02/02 22:36
clhsieh:請問copy ctor有甚麼特徵嗎 那段看起來就是普通的ctor 02/02 22:38
tinlans:出現在 copy ctor 的時候因為要取代原先的內容物,所以要 02/02 22:43
tinlans:先 delete 一次,然後再 new 一次;但不一定只能這樣做就 02/02 22:44
tinlans:是了。 02/02 22:44
QQ29:: xxx(NULL)這不是很矛盾嗎 這樣一定會設null if就沒用了吧 02/03 00:53
soniclin:這個預設就會是null 應該不用if去判斷吧? 02/03 05:52
soniclin:還是說 這個是直接copy其他有傳值的constructor來改的? 02/03 05:53
clhsieh:不知道 我跟作者不熟 被迫要用他的class來用而已 囧 02/04 13:54