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