1樓:
人家意思說的是"output arguments as references can be confusing"
你可以看下chromium的原始碼,如果乙個函式的需要在形參列表裡面用返回值,那麼他一定是個pointer,如果是imput arguments,pointer, reference隨便用
至於為什麼,考慮下因為如果乙個函式形參列表有輸入a和輸出b,那麼你的呼叫形式就是func(a,b);
從呼叫的地方就很難看出b是輸出變數,反之,如果b以指標語義傳進去,那就是
func(a, &b);
因為C++幾乎很少的情況需要把乙個值語義的東西變成指標,那麼這個時候b很容易被看出是個輸出的東西
2樓:exiledkingcc
不知道Google為什麼這麼提倡。
但是我覺得這樣做的理由並不是非常充分。
反正我是能用reference就用reference。
傳reference其實在各種庫裡面還是非常常見的,包括標準庫,比如用到std::error_code的,都是reference。
3樓:拉維
補充一下現有的回答
個人感覺「使用const&作為入參,*作為出參」,倒不完全是為了方便呼叫者,因為同樣可以反過來「使用const*作為入參,&作為出參」,對於呼叫者來說一樣是清晰的(如果能接受這套邏輯的話)。這裡的"References can be confusing"更多的是說提高函式自身的可讀性:入參在命名風格上和區域性變數是一致的,對它們的修改都不會影響到函式外,顯然傳入&作為出參的話會打破這個規則
為什麼很多人不建議使用駝峰命名法,有什麼弊端麼?
已重置 我是用js的,我們CTO規定我們都用下劃線,但是不管是第三方庫還是自帶方法名全都是駝峰的,這樣就導致了下劃線跟駝峰混用的局面,而且我覺得下劃線簡直就是英語裡把空格換成下劃線的感覺,就像一句英文,容易跟它的值混淆。 jack tang 因為駝峰命名法有很多時候存在不同的理解,比如首字母大寫還是...
為什麼不建議用 try catch?
stevefan1999 因為try catch需要用到 下推 自動機,而用 下推 自動機的代價很高。不過如果自動機能提供更高的價值的話,很多人選擇不了了之。譬如async也是自動機的建構的。至少C C Babel TS四大金剛是這樣 但是它能提供的功能與價值很高 簡化非同步程式設計的困擾,在普遍場...
寶馬為什麼不建議輪胎換位?
FREECAR車勢 其實如果從汽車廠家和經銷商的角度一定不建議輪胎換位。因為他們對他們產品極致表現安全角度考慮。寶馬多半都是防爆胎。當然如果你是一般日常上下班更換太大問題。首先每個車輛的駕駛習慣不同會導致吃胎,動平衡不同擔心會有安全隱患。FREECAR車勢 關注汽車及零配件15年。 寶馬後驅車型幾乎...