最新回答 / 慕田峪2224101
template<typename T>?int& MyStack<T>::operator[](int i) {? ? ?return m_pBuffer[i];}我是這么實(shí)現(xiàn)的,但是好像行不通報(bào)錯(cuò):?no match for 'operator[]' (operand types are 'char [17]' and 'MyStack<int>')|但是我感覺這樣可以重載呀
2018-03-01
最新回答 / 慕尼黑8374427
怎么可能啊,m_iTop最多就是n,push()方法一開始不是有判斷是否為full么,你push第n+1個(gè)元素的時(shí)候就直接return false,根本執(zhí)行不到m_iTop++
2018-02-03
最新回答 / 慕標(biāo)6516834
elem只是作為一個(gè)中間值,做一個(gè)跳板,在m_iTop下標(biāo)減一,指向出棧,如果寫成m_pBuffer[m_iTop] = elem,因?yàn)閭鬟f的是引用,那么你的m_pBuffer[m_iTop]的值就被賦值為你主函數(shù)傳遞的值。個(gè)人見解,理解錯(cuò)了,勿噴。
2017-07-28
最新回答 / BingBing_Elf
首先,我覺得你可能沒(méi)明白棧頂元素的位置,它的位置一直是在一個(gè)空位置,這樣才可以有位置來(lái)存儲(chǔ)新的進(jìn)棧元素,這也是老師說(shuō)為什么m_iTop這個(gè)角標(biāo)和元素個(gè)數(shù)相等的原因,也就是說(shuō),當(dāng)你元素為5個(gè)時(shí),存儲(chǔ)的角標(biāo)為0-4,但是你的m_iTop在5的位置。所以,在空棧的情況下,是不是首位置就應(yīng)該是空的,即它的角標(biāo)為0,當(dāng)一個(gè)元素入棧后,就可以插入到角標(biāo)為m_iTop的位置了,插入后一定要進(jìn)行m_iTop++,讓指針指向下一個(gè)位置,以便下一個(gè)元素的入棧。希望可以幫到你(????)
2017-07-07
最贊回答 / 我是一只小蝸牛
因?yàn)镃++ 默認(rèn)的拷貝構(gòu)造函數(shù)是淺拷貝,咋們案例是值這種東西,所以可以直接賦值;但是如果涉及到指針,那么用淺拷貝容易造成內(nèi)存泄漏,因?yàn)槟愕牡刂肥且粯拥?,釋放兩次?huì)出現(xiàn)內(nèi)存泄漏,這時(shí)候你就要自己實(shí)現(xiàn)拷貝構(gòu)造函數(shù)了,而不能使用默認(rèn)的拷貝構(gòu)造函數(shù)
2017-06-03