[讨论] 置底十三诫新增

楼主: 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