class Base{
protected:
int remainItems = 0;
public:
Base(){}
virtual int numOfItem() = 0;
};
class Deveried1 : public Base{
public:
Deveried1() :Base(){ remainItems = numOfItem(); }
int numOfItem(){
return 5;
}
};
class Deveried2 : public Base{
public:
Deveried2() :Base(){ remainItems = numOfItem(); }
int numOfItem(){
return 10;
}
};
class Deveried3 : public Base{
public:
Deveried3() :Base(){ remainItems = numOfItem(); }
int numOfItem(){
return 10;
}
};
int main(){
Base* foo = new Deveried3;
}
有了這樣的設計,對於每一個deveried類,我都必須在構造函數中爲initalize remainingItems做同樣的事情。我想知道在這種情況下是否有更好的方式/模式。如何更改變量initializated取決於虛函數
您不能在基類構造函數中調用虛函數。 – 2014-12-13 11:35:12
這是什麼方法?難道你不能只創建一個以'remainingItems'作爲參數的第二個基類構造器嗎? – nvoigt 2014-12-13 11:35:32
該方法用於爲不同的Deveried類存儲numofItem,因此在開始時,remainingItems = numofItem。 – user2477 2014-12-13 11:38:17