C++建構函式要點

來源:互聯網
上載者:User

標籤:

1、作用:建構函式主要用來完成成員的初始化工作

2、寫法:與類同名的函數,一般為公有,在單例的情況下可以定義為私人,建構函式可以帶參數,也可以重載,但是沒有傳回型別,可以不手動提供建構函式。

3、繼承:

(1)基類沒有定義建構函式的情況:

衍生類別也可以不定義建構函式,全部採用預設的建構函式。

如果只有衍生類別定義建構函式,只需要構造衍生類別對象即可,對象的基類部分使用預設建構函式來自動建立。

(2)基類中存在建構函式:

基類中存在不帶參數的建構函式。如果基類定義了建構函式,而且該建構函式沒有參數,那麼它可以隱式的被繼承,也就是說,衍生類別根本不需要建構函式。

基類中存在帶參數的建構函式。如果基類定義了帶有參數的建構函式,則此建構函式必須被繼承且在衍生類別中實現建構函式。同時提供一個將參數傳遞給基類建構函式的途徑,以便在基類進行初始化時能獲得必需的資料,在實現建構函式時使用base關鍵字。建立衍生類別的對象後,程式首先啟動並執行是基類的構造函中的內容,然後才是衍生類別的內容。

4、拷貝建構函式:

拷貝建構函式是一種特殊的建構函式,函數的名稱必須和類名稱一致,它必須的一個參數是本類型的一個引用變數。拷貝建構函式是類本身就存在的一個建構函式。

淺拷貝深拷貝:預設的拷貝建構函式已經能夠處理大部分問題,其原理就是對應的變數進行賦值,但是這就會存在一個問題,當變數中存在指標或者動態成員時,拷貝指標可能不是我們想要的結果,這就是淺拷貝。在“深拷貝”的情況下,對於對象中動態成員,就不能僅僅簡單地賦值了,而應該重新動態分配空間。

C++建構函式要點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.