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