指針與引用當賦予一個函數原始變量來處理時,什么是更好的實踐:unsigned long x = 4;void func1(unsigned long& val) {
val = 5; }func1(x);或:void func2(unsigned long* val) {
*val = 5;}func2(&x);IOW:有什么理由選一個而不是另一個呢?
3 回答

largeQ
TA貢獻2039條經驗 獲得超8個贊
就像在所有其他地方一樣,永遠是 const
-正確。 注意:這意味著,除其他外,只有out值(見項目3)和通過值傳遞的值(見項目4)才可能缺少 const
說明符。 只有當值0/NULL是當前上下文中的有效輸入時,才按指針傳遞值。 理由1:AS 打電話的人,你看,不管你經過什么 一定是處于可用狀態。 理由2:AS 叫,你知道,不管是什么 是處于可用狀態。因此,不需要對該值執行空檢查或錯誤處理。 理由3:理據1和2將是 編譯器強制..如果可以,請始終在編譯時捕獲錯誤。 如果函數參數是一個輸出值,則通過引用傳遞它. 理由:我們不想破壞第二項. 只有在值為POD( 普通舊數據結構 )或足夠小(內存方面)或在其他方面足夠便宜(時間上)來復制。 理由:避免不必要的拷貝。 注: 足夠小
和 夠便宜的
不是絕對可以測量的。
- 3 回答
- 0 關注
- 391 瀏覽
添加回答
舉報
0/150
提交
取消