▉▂开发平台(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