[討論] 置底十三誡新增

作者: wtchen (沒有存在感的人)   2016-10-02 18:34:33
目前想新增一些東西,希望板友能夠提出一些idea。
有了題目板工才能寫內容 @@
我希望能置底的誡律至少要符合其中一項條件:
- 很重要的觀念,但是很多人會搞錯。
- C跟C++都有的東西,但是用起來不一樣。
目前板工想到的有:
- 空指標 (把之前寫的補充一下)
- call by value / call by reference的謬誤
- C/C++ 轉型的差異(const, void*)
- lvalue & rvalue
有其他想法請踴躍提供,感謝。
作者: Caesar08 (Caesar)   2016-10-02 18:55:00
c沒有reference,也沒有分lvalue和rvalue,要怎麼寫?為什麼C需要知道是不是rvalue?C++有move constructor、rvalue reference可以自動處理http://ideone.com/NfzFWu ???
作者: fatrabitree (胖兔子)   2016-10-02 21:53:00
C不行? 有嗎?
作者: CoNsTaR ((const *))   2016-10-02 22:05:00
C 有 l、rvalue 的觀念啊最簡單的例子就是你可以寫 i++ 但是不能寫 9++
作者: Caesar08 (Caesar)   2016-10-02 22:13:00
可是你的9是const
作者: CoNsTaR ((const *))   2016-10-02 23:06:00
你一樣沒辦法寫 ((int)9)++ 不是嗎或是 int fun () { return 9; } fun()++;而且我怎麼記得 C 會把 9 當成 int 而非 const int @@
作者: tinlans ( )   2016-10-02 23:49:00
gcc 的錯誤訊息裡也有包含 lvalue 這個字的句子啊像是 invalid lvalue in assignment 和 lvalue required比較傳統的書在教 a = 1; 和 b = a; 就會教人區分兩者了
作者: hunandy14 (Charlott.HonG)   2016-10-03 13:46:00
前幾天我發文的那篇後來沒回我惹QQ 這裡會有解答嗎~我問了兩個問題 我是想問第二個~是否從C++ 開始參數都應該使用 ref (效能更快)~
作者: Sidney0503 (Sidney0503)   2016-10-03 14:30:00
rvalue和lvalue不用特別寫吧?看effective modern C++
作者: wtchen (沒有存在感的人)   2016-10-03 15:38:00
hunandy14的問題我會答"no" (為啥你會覺得效能更快阿)
作者: hunandy14 (Charlott.HonG)   2016-10-03 19:08:00
诶 我從一開始就誤會了麼 就是 void fun(int i[999]){}所以傳入的時候並不會複製 999 筆資料是吧QQ
作者: wtchen (沒有存在感的人)   2016-10-03 19:18:00
C/C++是不能傳遞整個陣列的喔,C++的情況就用ref囉請看13誡-12
作者: cobrasgo (人魚線變成鮪魚線,超帥)   2016-10-04 00:34:00
我的疑問是為什麼要寫這種code呢?寫的人期待每個人standard都看得很熟嗎?另外這個code放在不同compiler有機會會有不同的結果可植性很差要是warning關掉了,怎麼死的都不知道
作者: Caesar08 (Caesar)   2016-10-04 00:43:00
就是因為寫的人不知道,才會出現這種code阿
作者: hunandy14 (Charlott.HonG)   2016-10-04 12:04:00
我覺得我舉錯例子了QQ 好難形容,感謝您的答覆~換個~如果引數是很大的類別 void fun(Demo a){} 這樣呢
作者: wtchen (沒有存在感的人)   2016-10-04 16:06:00
那會整個copy,所以不建議這樣,用pointer/ref.傳遞就好
作者: hunandy14 (Charlott.HonG)   2016-10-06 00:22:00
好的了解謝謝~

Links booklink

Contact Us: admin [ a t ] ucptt.com