我想在父構造函數被調用之前做一些處理。下面的例子說明了爲什麼我想這樣做,儘管爲了清晰起見,我已經做了一些小事。真正的父構造函數正在做一些渲染,但讓我們先試着解決這個問題。如何在一些處理之後調用父構造函數?
本質上,問題出現在由父構造函數調用overriden函數時,但尚未設置子數據。我該如何解決?
class BaseClass {
public:
int myNumber;
BaseClass(){
myNumber = 0;
this->printNumber();
}
virtual void printNumber(){
printf("My number is %d\n", this->myNumber);
}
}
class ChildClass : BaseClass {
public:
float childNumber;
ChildClass(float myNumber) : BaseClass() {
this->childNumber = myNumber;
}
void printNumber(){
printf("My number is %f\n", this->childNumber);
}
}
這裏是這個成語的_Boost_實現:http://www.boost.org/doc/libs/1_52_0/libs/utility/base_from_member.html –
你可以**從構造函數調用一個虛函數。 –
@JonathanWakely真的,我編輯它。 – imreal