[問題] 參數傳指標還是傳reference

看板C_and_CPP (C/C++)作者 (陳揚和)時間13年前 (2012/08/23 16:00), 編輯推噓2(2010)
留言12則, 6人參與, 最新討論串1/2 (看更多)
這是個老問題,有人說盡量傳reference, 有人說傳指標自己檢查是否為NULL或奇怪的值 我以前沒試過, 以為reference 不能是NULL,然後傳入NULL的時候會有warning什麼的 剛才試了一下(visual c++)傳NULL的reference編譯時也沒有報錯, (好像編譯時也很難知道是不是NULL) 就只有跑到的時候會發生錯誤 void foo(int& p) { cout << p << endl; } int main(void) { int* p = NULL; foo(*p); } 如此一來, 傳reference又比傳pointer有多什麼好處的, 是說reference會固定指一個東西, pointer可能不小心指到別的東西 (那傳 classname* const ptr 是否ptr也不能指到別的了) 這麼說傳reference到底比傳 classname* const ptr有什麼優(缺)點 -- 尷尬是幽默感的來源 come on man 別怕丟臉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 108.94.138.88 ※ 編輯: sorryChen 來自: 108.94.138.88 (08/23 16:00)

08/23 16:02, , 1F
少一個字元
08/23 16:02, 1F

08/23 16:11, , 2F
reference 就比較好打字的指標而已
08/23 16:11, 2F

08/23 16:17, , 3F
你這根本就故意搞ref...
08/23 16:17, 3F

08/23 16:17, , 4F
你如果用ref可以用 . 會比用->少打一個字
08/23 16:17, 4F

08/23 16:34, , 5F
這是 design choice, 合理使用才重要
08/23 16:34, 5F

08/23 17:19, , 6F
傳指標的優點是 user code 會像這樣 API_x(&val);
08/23 17:19, 6F

08/23 17:20, , 7F
這樣的 API_x 八成會修改 val
08/23 17:20, 7F

08/23 17:21, , 8F
如果用 ref 的話 user code 比較不易分辨
08/23 17:21, 8F

08/23 17:22, , 9F
我自己的選擇是API要改值就用指標,其他都用 ref
08/23 17:22, 9F

08/23 17:27, , 10F
改值與否應該可以用參數是否加 const 來強調?
08/23 17:27, 10F

08/23 17:29, , 11F
指標多出的功能就是NULL與否,除此我覺得就是5樓說的
08/23 17:29, 11F

08/23 18:02, , 12F
我指的是 user code
08/23 18:02, 12F
文章代碼(AID): #1GDUCWXJ (C_and_CPP)
文章代碼(AID): #1GDUCWXJ (C_and_CPP)