作者dwight90488 (陈佳佳)
看板C_and_CPP
标题[问题] Stack using Array to implement
时间Wed Oct 11 21:36:55 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
Win7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
C++
问题(Question):
在读开放课程的资料结构的Stack章节时有些问题想厘清, 请各位大大指导 :)
void Stack<KeyType>::Add(const KeyType &x)
{
if(IsFull())
stack_full();
else
stack[++top]=x;
}
这是在做Stack push时的member function, 这里传入的参数为某个变数的reference
这边传入参数用pass by value或者pass by reference, 我想应该对这个stack出来
结果都是一样的.
我的疑问是 使用reference或pointer的好处是当我们想要改到传进参数的本体的时候,
可以直接把自己传进去, 但是当像这stack push的例子, 有没有改到传进来的参数
根本没有影响的情况下, 是否传入参数使用pass by value或reference都没关系?
还是说用reference有甚麽好处呢? (少copy这个动作?!)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.130.65
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1507729017.A.62D.html
1F:推 jerryh001: 你答对了 10/11 22:18
2F:→ jerryh001: 另一种情况是某些不能复制的物件 就只能传参考 10/11 22:19
3F:→ dwight90488: 谢谢Jerryh001大大 想请问答对是指少copy这个动作吗 10/11 22:31
4F:→ dwight90488: 所以尽量在call function的传入都使用pass by 10/11 22:32
5F:→ dwight90488: reference吗? 即便只是传到function做加法? 10/11 22:33
6F:推 jerryh001: 我是习惯都加& 不过如果只是小程式没差很多就随意 10/11 23:04
7F:→ dwight90488: 谢谢您 杰瑞h001大大!!!!! 10/11 23:07
8F:→ jimfan: 好奇一问:stack[++top]=x; 有否将 x 复制呢? 10/13 00:07
9F:推 oToToT: 有吧,=operator通常会复制吧 10/13 14:49
10F:→ dwight90488: 我觉得assignment 不会复制到x吧 10/13 21:09
11F:推 jerryh001: 会复制 你之後把x改掉 stack里面是不会动到的 10/13 21:51
12F:推 Lipraxde: j大前面说某些物件不能复制,这样有冲突吗? 10/13 22:03
13F:→ kingofsdtw: 找找operator ? 10/13 22:56
14F:→ kingofsdtw: "const" KeyType "&x" ,&x单纯个人喜好 10/13 23:00
15F:推 jerryh001: 会 这时候stack的型态可以改成 那种物件的指标来避免 10/14 08:36