天天看點

構造函數

一種特殊的成員函數,它的名字和類名相同,沒有傳回值,不需要使用者顯式調用(使用者也不能調用),而是在建立對象時自動執行。這種特殊的成員函數就是構造函數。有了構造函數,我們就可以在建立對象的同時為成員變量指派。

在棧上建立對象時,實參位于對象名後面,例如 <code>student stu("小明", 15, 92.5f);</code>

在堆上建立對象時,實參位于類名後面,例如 <code>new student("李華", 16, 96)</code>

構造函數必須是public屬性的,否則建立對象時無法調用。當然,設定為private、protected屬性也不會報錯,但是沒有意義。

構造函數沒有傳回值,因為沒有變量來接收傳回值,即使有也毫無用處,這意味着:

1、不管是聲明還是定義,函數名前面都不能出現傳回值類型,即使是void也不允許

2、函數體中不能有return語句

構造函數的重載

和普通成員函數一樣,構造函數是允許重載的。一個類可以有多個重載的構造函數,建立對象時根據傳遞的實參來判斷調用哪一個構造函數。

構造函數的調用是強制性的,一旦在類中定義了構造函數,那麼建立對象時就一定要調用,不調用是錯誤的。如果有多個重載的構造函數,那麼建立對象時提供的實參必須和其中的一個構造函數比對;反過來說,建立對象時隻有一個構造函數會被調用。

繼續閱讀