【发布时间】:2018-01-03 07:39:19
【问题描述】:
关于继承,我想从基类创建具体的对象。 据我了解, Child 类可以代表它的父亲类。考虑以下课程:
class Material{
public:
virtual void print(){
cout << "Base Material Class" << endl;
}
}
class Wood: public Material{
public:
void print(){
cout << "Wood Material" << endl;
}
}
class Furniture{
public:
void setMaterial(Material material){
this->material = material;
}
virtual void print(){
this->material.print();
}
protected:
Material material;
}
class Chair: public Furniture{
// further code implements here
}
int main(int argc, char** argv){
Chair aChair;
Material material = Wood();
aChair.setMaterial(material);
aChair.print(); // -> "Base Material Class"
}
问题是如何在运行时将材料指定为 Wood/Steel/etc...(这在 Java 中可用,但 Cpp 不是 Java)。你有什么建议吗?我查看了here 和here,但我仍然没有找到解决方案。 谢谢。
【问题讨论】:
-
运行时多态性是在 C++ 中可用。但它需要引用或指针(最好是智能指针)。您正在体验object slicing。一个像样的book on C++ 应该涵盖这一点。
标签: c++