close
複製建構式:
複製建構式是以同型物件作為參數的建構式,對 Grade 類別而言, Grade(const Grade&)就是他的複製建構式:
Grade a(30);
Grade b(a);
賦值運算子:
operator= 是賦值運算子,我們可對他作多載:
Grade a(30);
Grade b;
b = a; //呼叫 b.operator=(a)
大三法則:
當類別定義了建構式、複製建構式與賦值運算子三個特殊函式的其中一個時,通常其他兩個也都要同時被定義。
1、解構式:什麼都不做。此時指標指向的記憶體並不會被釋放,可能造成記憶體洩漏。
2、複製建構式:直接複製資料成員,此時指標所指向的記憶體位址也會直接被複製過去。
3、賦值運算子:直接複製資料成員,此時原本指標指向的記憶體可能還沒被釋放,但指標所指向的位址已經被改變了,會造成記憶體洩漏。
全站熱搜
留言列表