復(fù)習(xí)一下數(shù)據(jù)結(jié)構(gòu),用鏈表實(shí)現(xiàn)了一個(gè)堆棧模板類。寫的過程中用到一些知識(shí)點(diǎn),碰到一些問題,隨手記下來。1:mystack<int> s; mystack<int> s2 = s;編譯器會(huì)把s2 = s編譯成拷貝構(gòu)造函數(shù)s2(s),此時(shí)調(diào)用的是拷貝構(gòu)造函數(shù),而不是賦值函數(shù)(切記)。另外有時(shí)候編譯器這種自做聰明,自動(dòng)調(diào)用符合參數(shù)類型的構(gòu)造函數(shù)會(huì)帶來很難發(fā)現(xiàn)的錯(cuò)誤,為了防止編譯器這么做,可以在構(gòu)造函數(shù)聲明前加explicit關(guān)鍵字。
2:不改變成員變量值的函數(shù),例如empty(),要聲明為const,這點(diǎn)很重要,不然當(dāng)一個(gè)const mystack&類型的對(duì)象調(diào)用empty()的時(shí)候,會(huì)編不過。
3:拷貝構(gòu)造函數(shù)最好要先判斷是否是拷貝自身,不然有時(shí)候就出錯(cuò)。
4:拷貝構(gòu)造函數(shù)也別忘了成員變量初始化列表。