建構函式是用來初始化類物件的。如果類中沒有顯式的宣告建構函式,那麼編譯器會自動建立乙個預設的建構函式,並且這個預設的建構函式僅僅在沒有顯式的宣告建構函式的情況下才會被建立。
建構函式與父類的其它成員不同,它不能被子類繼承。因此,在建立子類物件時,為了初始化從父類中繼承來的成員變數,編譯器需要呼叫其父類的建構函式。如果子類的建構函式沒有顯式地呼叫父類的建構函式,則預設呼叫父類的無參建構函式,至於什麼是顯式呼叫,在下面會詳細說明。
關於子類中建構函式的構造原則,總結如下:
父類中沒有宣告建構函式
(1)子類也沒有宣告自己的建構函式,則父類和子類均由編譯器生成預設的建構函式。
(2)子類中宣告了建構函式(無參或者帶參),則子類的建構函式可以寫成任何形式,不用顧忌父類的建構函式。在建立子類物件時,編譯器會自動生成父類預設的構造引數,然後再呼叫子類的建構函式。
父類只宣告了無參建構函式
如果子類的建構函式沒有顯式的呼叫父類的建構函式,則將會呼叫父類的無參建構函式。也就是說,父類的無參建構函式將會被隱式的呼叫。
父類只宣告了帶參建構函式
在這種情況下,要特別注意。因為父類只有帶參的建構函式,所以如果子類中的建構函式沒有顯示地呼叫父類的帶參建構函式,則會報錯,所以必需顯示地呼叫。關於建構函式的顯示呼叫,參見下例。
#include using namespace std;
class student
~student(){}
protected:
int num;
};class student1: public student
~student1(){}
void display()
private:
int age;
};void main()
reference: C 中子類的建構函式
構造方法用來初始化類的物件,與父類的其它成員不同,它不能被子類繼承 子類可以繼承父類所有的成員變數和成員方法,但不繼承父類的構造方法 因此,在建立子類物件時,為了初始化從父類繼承來的資料成員,系統需要呼叫其父類的構造方法。如果沒有顯式的建構函式,編譯器會給乙個預設的建構函式,並且該預設的建構函式僅僅...
子類的建構函式
基類的成員函式可以被繼承,可以通過派生類的物件訪問,但這僅僅指的是普通的成員函式,類的建構函式不能被繼承。建構函式不能被繼承是有道理的,因為即使繼承了,它的名字和派生類的名字也不一樣,不能成為派生類的建構函式,當然更不能成為普通的成員函式。在設計派生類時,對繼承過來的成員變數的初始化工作也要由派生類...
c 類的建構函式及子類的建構函式
類在建立的時候需要呼叫建構函式,假如對系統沒有任何說明,則會呼叫系統預設的建構函式,在需要自行寫建構函式的時候往往是一下幾種情況 1.建構函式中不帶引數 includeusing namespace std class student student student void int student...