[問題] Stack using Array to implement

看板C_and_CPP作者 (陳佳佳)時間6年前 (2017/10/11 21:36), 編輯推噓6(609)
留言15則, 6人參與, 6年前最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1507729017.A.62D.html

10/11 22:18, 6年前 , 1F
你答對了
10/11 22:18, 1F

10/11 22:19, 6年前 , 2F
另一種情況是某些不能複製的物件 就只能傳參考
10/11 22:19, 2F

10/11 22:31, 6年前 , 3F
謝謝Jerryh001大大 想請問答對是指少copy這個動作嗎
10/11 22:31, 3F

10/11 22:32, 6年前 , 4F
所以盡量在call function的傳入都使用pass by
10/11 22:32, 4F

10/11 22:33, 6年前 , 5F
reference嗎? 即便只是傳到function做加法?
10/11 22:33, 5F

10/11 23:04, 6年前 , 6F
我是習慣都加& 不過如果只是小程式沒差很多就隨意
10/11 23:04, 6F

10/11 23:07, 6年前 , 7F
謝謝您 傑瑞h001大大!!!!!
10/11 23:07, 7F

10/13 00:07, 6年前 , 8F
好奇一問:stack[++top]=x; 有否將 x 複製呢?
10/13 00:07, 8F

10/13 14:49, 6年前 , 9F
有吧,=operator通常會複製吧
10/13 14:49, 9F

10/13 21:09, 6年前 , 10F
我覺得assignment 不會複製到x吧
10/13 21:09, 10F

10/13 21:51, 6年前 , 11F
會複製 你之後把x改掉 stack裡面是不會動到的
10/13 21:51, 11F

10/13 22:03, 6年前 , 12F
j大前面說某些物件不能複製,這樣有衝突嗎?
10/13 22:03, 12F

10/13 22:56, 6年前 , 13F
找找operator ?
10/13 22:56, 13F

10/13 23:00, 6年前 , 14F
"const" KeyType "&x" ,&x單純個人喜好
10/13 23:00, 14F

10/14 08:36, 6年前 , 15F
會 這時候stack的型態可以改成 那種物件的指標來避免
10/14 08:36, 15F
文章代碼(AID): #1PtXvvOj (C_and_CPP)