子類呼叫父類的建構函式方式一覽

2021-09-29 12:25:59 字數 1732 閱讀 9158

首先要了解子類呼叫建構函式過程:父類建構函式–>子類建構函式

1.父類有預設建構函式,子類未顯示呼叫時,子類自動呼叫父類的預設建構函式;

#include using namespace std;

class father

};class children : public father

};int main(int argc, char** ar**)

2.父類有預設建構函式,子類顯示呼叫時,子類自動呼叫父類的預設建構函式;

#include using namespace std;

class father

};class children : public father

};int main(int argc, char** ar**)

3.父類沒有預設建構函式,子類顯示呼叫時,子類會呼叫系統為父類生成的預設建構函式;

#include using namespace std;

class father

};class children : public father

};int main(int argc, char** ar**)

4.父類沒有預設建構函式,子類未顯示呼叫時,子類會呼叫系統為父類生成的預設建構函式;

#include using namespace std;

class father

};class children : public father

};int main(int argc, char** ar**)

5.父類有帶引數的建構函式,也有預設建構函式,子類未顯示呼叫父類建構函式時,子類會呼叫父類預設建構函式;

#include using namespace std;

class father

father(int nnum) };

class children : public father

};int main(int argc, char** ar**)

6.父類有帶引數的建構函式,也有預設建構函式,子類顯示呼叫父類一種建構函式時,子類會呼叫父類該種建構函式;

#include using namespace std;

class father

father(int nnum) };

class children : public father

};int main(int argc, char** ar**)

錯誤方式:

父類僅寫了帶引數的建構函式,沒寫不帶引數的預設建構函式時,而子類又沒有顯示呼叫父類建構函式時,編譯失敗。因為父類寫了建構函式,系統就不會為父類生成預設建構函式,子類想呼叫父類的預設建構函式時找不到;

#include using namespace std;

class father

father(int nnum) };

class children : public father

};int main(int argc, char** ar**)

如果覺得子類呼叫父類建構函式情況太多,不好記憶,那麼每次寫子類建構函式時最好顯示呼叫父類建構函式!

子類與父類構造函式呼叫順序

子類的析構函式的呼叫順序,和子類的建構函式的呼叫順序相反!記住,相反即可。include include using namespace std classm m classn n classa a classb public a b private m m1 m m2 static n ms n ...

父類建構函式 子類建構函式

1.子類可以通過super關鍵字來顯式地呼叫父類的建構函式。2.當父類沒有提供無引數的建構函式時,子類也不可以有無參建構函式,且子類的建構函式中必須顯式的呼叫父類的建構函式 3.如果父類提供了無引數的建構函式,此時子類的建構函式就可以不顯式的呼叫父類的建構函式,預設呼叫父類的無參建構函式。4.只要父...

父類建構函式 子類建構函式

1.子類可以通過super關鍵字來顯式地呼叫父類的建構函式。2.當父類沒有提供無引數的建構函式時,子類也不可以有無參建構函式,且子類的建構函式中必須顯式的呼叫父類的建構函式 3.如果父類提供了無引數的建構函式,此時子類的建構函式就可以不顯式的呼叫父類的建構函式,預設呼叫父類的無參建構函式。4.只要父...