作者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/m.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