▉▂開發平台(Platform): (Ex: Win10, Linux, ...)
MacOSX
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++5.4
問題(Question):
大家好,最近在修資料結構這門課,過去雖然有修過計算機程式
,但是兩學分的課所以感覺學得不是很扎實,對於class的部分只有粗略帶過..
所以來這邊請教大家:
對於一個data member中含有pointer的class,初始時會用new配置記憶體,
而自行建立的destructor會用delete釋放配置給該指標的記憶體,請問這樣的狀況下
該怎麼在member function中回傳一個local的class變數呢?
因為函數功能的需要,必須在函數中宣告一個class變數a來承接運算的結果,並return
該變數給calling function,由calling function中的class變數b承接,但是這樣的情
況下,由於member function terminates, destructor將a裡面的pointer給delete掉,
造成calling function中b裡面的指標指向一個直隨時有可能被修改的地方...
有自己試著去overload operator=及建立copy constructor來看看是否可以讓calling
function 中b裡面的pointer指向一個新的地方,在複製a的值過去,但好像a會先被
destructed(?!)..
上網查了很多destructor, return object的關鍵字,都找不到想要的答案..
在這裡麻煩大家解答了..
在下面附上class 的程式碼,大致上是我在建立一個stack的class 有一個destructor:
~Stack(){delete [] stack
初始的constructor有用new給該指標動態配置記憶體
問題卡在是我要寫一個member function splitStack(),作用是要將某個stack從中間
某個點分開拆成兩個stack,所以這個function 必須return stack型態的variable,
但是splitStack()中宣告的first再回傳值給main後,就被解構了..
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/IjGU1cDW