[問題] 什麼時後 不該用/該用reference當member
寫一個建構子
Foo(ICallback* callback)
: mCallback(callback){ assert(mCallback); }
被問說那為什麼你mCallback不用reference 然後Foo就開成(ICallback&)就好
我不想這樣改
但我沒有強力的說法比較出哪一種比較好或是合理
我的看法
用ref, caller勢必要*ptr 做dereference才能傳進來
雖然說reference 可以當作non null去操作
但有心要傳*null也不是不行.
開reference 給別人傳,比起pointer更有機會caller不小心傳入local variable
以上都可以用一句話“哪有人會這樣寫”來否定用pointer存.
而用reference 可以給人一種 必定要想辦法生出一個物件才能呼叫的感覺...
實在想不到哪個時候 用reference
才是合理的寫法.
反而我自己是很少看過member 用reference去存...
不知道大家在design上會有什麼考量
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.8.8.45
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1532344601.A.2C0.html
※ 編輯: lovejomi (39.8.8.45), 07/23/2018 19:36:57
→
07/23 19:47,
7年前
, 1F
07/23 19:47, 1F
→
07/23 19:51,
7年前
, 2F
07/23 19:51, 2F
→
07/23 19:52,
7年前
, 3F
07/23 19:52, 3F
→
07/23 19:53,
7年前
, 4F
07/23 19:53, 4F
推
07/23 20:21,
7年前
, 5F
07/23 20:21, 5F
推
07/23 20:26,
7年前
, 6F
07/23 20:26, 6F
→
07/23 20:28,
7年前
, 7F
07/23 20:28, 7F
→
07/23 20:28,
7年前
, 8F
07/23 20:28, 8F
→
07/23 20:32,
7年前
, 9F
07/23 20:32, 9F
→
07/23 20:32,
7年前
, 10F
07/23 20:32, 10F
→
07/23 22:15,
7年前
, 11F
07/23 22:15, 11F
→
07/23 22:40,
7年前
, 12F
07/23 22:40, 12F
→
07/23 23:35,
7年前
, 13F
07/23 23:35, 13F
→
07/23 23:35,
7年前
, 14F
07/23 23:35, 14F
→
07/23 23:36,
7年前
, 15F
07/23 23:36, 15F
→
07/23 23:36,
7年前
, 16F
07/23 23:36, 16F
→
07/23 23:37,
7年前
, 17F
07/23 23:37, 17F
推
07/24 00:44,
7年前
, 18F
07/24 00:44, 18F
→
07/24 00:45,
7年前
, 19F
07/24 00:45, 19F
推
07/24 00:50,
7年前
, 20F
07/24 00:50, 20F
推
07/24 02:23,
7年前
, 21F
07/24 02:23, 21F
→
07/24 02:23,
7年前
, 22F
07/24 02:23, 22F
→
07/24 02:23,
7年前
, 23F
07/24 02:23, 23F
→
07/24 02:23,
7年前
, 24F
07/24 02:23, 24F
→
07/24 02:23,
7年前
, 25F
07/24 02:23, 25F
→
07/24 02:23,
7年前
, 26F
07/24 02:23, 26F
→
07/24 02:23,
7年前
, 27F
07/24 02:23, 27F
→
07/24 05:47,
7年前
, 28F
07/24 05:47, 28F
→
07/24 05:47,
7年前
, 29F
07/24 05:47, 29F
→
07/24 05:48,
7年前
, 30F
07/24 05:48, 30F
→
07/24 05:48,
7年前
, 31F
07/24 05:48, 31F
→
07/24 05:49,
7年前
, 32F
07/24 05:49, 32F
→
07/24 05:50,
7年前
, 33F
07/24 05:50, 33F
→
07/24 05:50,
7年前
, 34F
07/24 05:50, 34F
推
07/28 12:57,
7年前
, 35F
07/28 12:57, 35F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):