作者hunandy14 (Charlott.HonG)
看板C_and_CPP
标题[问题] ref & 的位置为什麽前後都空白
时间Fri Sep 30 16:56:08 2016
把所有的Call by value
都改成 Call by reference 是比较好的做法吗?
应该理所当然的把全部都这麽做麽
原本是这样
int fun(int x);
> 这不适合导入超大的阵列
如果直接改
int fun(int &x);
> 又怕改到数值
加个const
int fun(const int &x);
> 好像同时兼具所有优点?
於是我就想说,那是不是C++11开始
引述数里面都不应该出现call by value
这样的想法是否有考虑不周的地方呢
====================================================
google的话又不晓得该下什麽关键字QuQ
有我观察到呀为什麽 Call by reference
的 & 位置是前後空白
重载下标符号 []
https://goo.gl/jcgURm
比如说
int & operator[]( int );
最初我以为可能是打错之类的
结果却一直有看到类似的打法
这是有什麽原因吗~
实际测试 & 要黏在前面
或後面好像没什麽影响
或是真的只是看人习惯怎麽打就怎麽打呢QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.238.116.205
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1475225771.A.937.html
※ 编辑: hunandy14 (36.238.116.205), 09/30/2016 16:59:16
1F:→ wtchen: ......我在想要不要把call by ref.这种东西加进置底 09/30 17:14
2F:→ wtchen: 变成第14诫....(没有call by ref这种东西) 09/30 17:14
诶 真的哦,那应该怎麽叙述还有看过pass by reference
3F:→ wtchen: C是没有,C++的case好像又不太一样 09/30 17:16
4F:推 wtchen: 不过这根本文无关,抱歉打扰了 /(_ _)\ 09/30 17:17
5F:→ wtchen: 不过我看不懂你的问题,你是说当你要更改x时 09/30 17:18
我有补充一点了,不好意思没叙述好
6F:→ wtchen: 要用call by ref还是不要? 09/30 17:19
7F:→ wtchen: (可是你call by value不是根本改不了?) 09/30 17:19
就是如果用方式1的话不是如果阵列太大传入时会复制会花时间
不考虑能否改的问题~建立在不需要改的假设上
那是不是应该C++开始,任何地方都采用3,加快速度呢省了复制时间
因为这麽看来似乎没有必要用 1 全部都改成 3 一样功能速度更快
不晓得还有没有我没有考虑到的地方呢
8F:→ pttworld: 前後空白是parser问题,单一主型别变数无法感受威力。 09/30 18:26
什麽意思~可以在多叙述一些麽XDD
感觉好像是答案了
9F:→ james732: int& x; int & x; int &x; 好像都一样? 09/30 19:45
对呀,执行起来无感,感到好奇
指标只会出现
int *i;
int* i;
个人对这个的理解是
单一变数尽量让*黏在前面
这样可以很明显辨别~
int 与 int* 两种型态
多变数的时候
int* i, j;
那个j可没有带到星号於是
int *i, *j;
才更容易叙述
可是他出现了
int & i;
而且还不是太少见的,觉得好奇
※ 编辑: hunandy14 (118.171.8.192), 10/01/2016 12:38:18
10F:→ pttworld: 减少对常见的好奇,资深艺术工程师会对程式码排版。 10/01 13:11
11F:→ pttworld: 个人理解就是本篇答案。观念正确前提,让自己好记忆。 10/01 13:13
12F:推 steve1012: call by reference其实是蛮不精确的讲法 10/01 13:57
13F:推 steve1012: 你想讲的是全部都采用shallow copy吧 跟python一样 10/01 13:59
14F:→ steve1012: 其实蛮不方便的 有时候你就是不想要改 却要一直copy 10/01 14:00
15F:→ steve1012: 讲错 有时候你想要"改" 10/01 14:01
16F:推 Frozenmouse: 指标其实也可以 T * v 前後留白这样啊XD 10/01 15:50
不过我还真没看过有人这麽写的QQ
我在爬下标的时候却看到不止一次 & 这样子的写法
就上来问问惹
※ 编辑: hunandy14 (118.171.8.192), 10/01/2016 16:07:15
17F:→ ilms49898723: 事实上就是一样,就像你不会问func()跟func () 10/01 17:44
18F:→ ilms49898723: 你初学时应该学过除了特别情况(如include)根本不会 10/01 17:45
19F:→ ilms49898723: 管你打几格空格 10/01 17:46
20F:→ ilms49898723: 另外个人习惯一次只宣告一个变数,然後都要给初始值 10/01 17:47
21F:→ ilms49898723: 所以我也好久没写过 int *a, b; 这种东西了XD 10/01 17:47
※ 编辑: hunandy14 (118.171.8.192), 10/01/2016 18:03:03
22F:推 Frozenmouse: 讲到最後都是宗教战争了(x 10/01 18:05
我是还好啦XDD 以为有什麽标准要这样做
第二个问题都没人回惹QQ
※ 编辑: hunandy14 (175.96.81.211), 10/01/2016 19:27:16