首先要了解子類呼叫建構函式過程:父類建構函式–>子類建構函式
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.只要父...