構造函數
當在創建一個類的對象時,會自動調用構造函數。構造函數可以重載。
但參數的構造函數可以當作轉換函數來使用,代碼如下
class A
{
private:
int a;
public:
A(int n):a(n){}
}
int main()
{
A a = 10; // 調用單參數的構造函數
return 0;
}
賦值構造函數
函數原型是: className(const className &c);
如果類的成員含有指針變量,則應該重載該函數。如果不重載,在使用一個對象創建另一個對象時就只會拷貝指針的值, 而不會拷貝指針所指向的內容。這樣會導致內存被重復釋放。
賦值運算符函數
函數原型是: className& operator=(const className &c);
該函數同樣是在有成員指針變量的情況下需要重載。如果不重載,在使用一個對象給另一個對象賦值時,會導致內存的泄漏,并且也會導致內存的重復釋放。
在重載該函數時,還有一個需要注意的地方是,需要判斷傳入的對象是否自身,如果不判斷的話,在傳入自身時會丟失數據。