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