看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《yoco315 (眠月)》之銘言: : ※ 引述《bgcrwf (老王)》之銘言: : : 最近在看程式碼的時候 有看到一段搞不懂 : : if (this) { : : // blah.... : : } else { : : // blah.... : : } : : 想請教各位 : : 在什麼情況下程式會進到else這個區塊來呢?? : : 想很久想不出來 : : 謝謝 : 像這樣的情況就會是哩: : A *a = NULL ; : a->f() ; : 這樣 a::f() 裡面拿到的 this 就是 NULL。 : 會這樣設計的原因, : 可以參考一個叫做 "Null Pointer(Object) Pattern" 的手法。 就[Refactoring]這本書裡提及的Null Object Pattern 感覺和你提到的目的相反耶 Null Object就是不想"一直檢查是否為null" 才會創造一個虛無的object出來 還是說我有哪個地方誤會了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.99.205 ※ 編輯: elefant 來自: 203.70.99.205 (03/28 23:18)
tkcn:我也有同樣的疑問 @@ 03/28 23:38
loveme00835:嗯, 我也翻了一下資料, 它應該是"do nothing", 而不是 03/29 01:18
loveme00835:"is nothing" 03/29 01:18
aecho:就我所理解的…objective C裡為null時~~ 03/29 09:47
aecho:呼叫的methods幾乎都是do nothing 03/29 09:48
aecho:能直接判斷this是否為null,然後讓他do nothing,很方便呀。 03/29 09:49
softwind:ctor 直接用null obj作init 把所有method都導到 03/30 03:11
softwind:do nothing 這樣 是這個pattern的意思嗎? 03/30 03:11
aecho:像length的do nothing回傳0,而回傳pointer的都會回傳null。 03/30 12:55
aecho:void的method不做事,而description則是回傳(null)字串… 03/30 12:56
aecho:do nothing與該類別的行為有關係吧~~ 03/30 12:57
loveme00835:回傳pointer的可以回傳Null object的位址, 再用多型do 03/31 04:18
loveme00835: nothing吧? 03/31 04:18