Re: [問題] 什麼時後 不該用/該用reference當member
※ 引述《lovejomi (JOMI)》之銘言:
: 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上會有什麼考量
: 謝謝
我整理一下你的文章
覺得應該將m_callback宣告為reference的理由
‧ 用reference可以讓使用者明白一定要有物件作引數才可以
覺得應該將mp_callback宣告為pointer的理由
‧ 我不想寫成reference
老實講我覺得這種問題 沒什麼必要來搬救兵
有些團隊文化就是要聽大老的 有些團隊以和為貴 有些團隊奔放自由 有些團隊會造神
這種問題 只是看你在哪種團隊 然後做的東西給誰用而已
如果你的程式碼是編譯完變軟體 給一般用戶用 我覺得真的沒差
如果你的程式碼是給別人用的 那個assert其實意義也不大
很多assert根本就是寫爽的 只是會跳視窗的TODO而已
所以在參數設計上刁難user 確實是有效果
但是認真討論下去 真的沒啥意義 就只是習慣問題而已
等等跳出第三個人來說:為什麼不用std::function就好
那不是沒完沒了?
對呀 為什麼你不用std::function就好?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.50.60.32
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1532347671.A.CBE.html
※ 編輯: nobodycares (123.50.60.32), 07/23/2018 20:13:45
→
07/23 21:17,
6年前
, 1F
07/23 21:17, 1F
→
07/23 22:13,
6年前
, 2F
07/23 22:13, 2F
推
07/23 23:07,
6年前
, 3F
07/23 23:07, 3F
→
07/23 23:09,
6年前
, 4F
07/23 23:09, 4F
→
07/23 23:09,
6年前
, 5F
07/23 23:09, 5F
→
07/24 00:53,
6年前
, 6F
07/24 00:53, 6F
→
07/24 00:57,
6年前
, 7F
07/24 00:57, 7F
→
07/24 00:59,
6年前
, 8F
07/24 00:59, 8F
推
07/24 09:59,
6年前
, 9F
07/24 09:59, 9F
推
07/24 16:07,
6年前
, 10F
07/24 16:07, 10F
推
07/24 16:08,
6年前
, 11F
07/24 16:08, 11F
→
07/24 16:09,
6年前
, 12F
07/24 16:09, 12F
推
07/24 16:11,
6年前
, 13F
07/24 16:11, 13F
→
07/24 16:11,
6年前
, 14F
07/24 16:11, 14F
推
07/24 16:20,
6年前
, 15F
07/24 16:20, 15F
推
07/27 19:43,
6年前
, 16F
07/27 19:43, 16F
推
07/28 14:27,
5年前
, 17F
07/28 14:27, 17F
→
07/28 14:28,
5年前
, 18F
07/28 14:28, 18F
→
07/28 14:28,
5年前
, 19F
07/28 14:28, 19F
推
07/29 08:56,
5年前
, 20F
07/29 08:56, 20F
→
07/29 08:56,
5年前
, 21F
07/29 08:56, 21F
→
07/29 09:54,
5年前
, 22F
07/29 09:54, 22F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):