C++(第二課) 學習筆記

構造函數

當在創建一個類的對象時,會自動調用構造函數。構造函數可以重載。

但參數的構造函數可以當作轉換函數來使用,代碼如下

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);

該函數同樣是在有成員指針變量的情況下需要重載。如果不重載,在使用一個對象給另一個對象賦值時,會導致內存的泄漏,并且也會導致內存的重復釋放。

在重載該函數時,還有一個需要注意的地方是,需要判斷傳入的對象是否自身,如果不判斷的話,在傳入自身時會丟失數據。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,536評論 1 51
  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區別? C沒有Protection行為...
    阿面a閱讀 7,707評論 0 10
  • 第一天 一.內聯函數(inline) 函數調用的時候需要建立棧內存環境,進行參數傳遞,并產生程序執行轉移,這些工作...
    陳果123閱讀 1,144評論 0 1
  • 親愛的女孩,愿你笑容溫暖,融化寒風冰霜;愿你心懷夢想,執著走向遠方。 ...
    蘇諾_杜若閱讀 482評論 0 1
  • 昨天有點興奮,早上我和女兒都沒有早起,爸爸也沒有叫我們,說是女兒昨天表現好,今天獎勵我們自然醒。正當我沉浸在...
    崔嘉諾閱讀 166評論 0 0