给出了 3 个类。
class vehicle{
public:
void start();
}
class airplane: public vehicle{
void start();
void setRoute(route r);
void setAltitude(altitude a);
}
class boat: public vehicle{
void start();
void setRoute(route r);
}
假设我们通过命令行接收到一个参数,让我们了解我们是要管理一架飞机还是一艘船。
Vehicle* v;
if (parameter == 1) {
v = new airplane();
v->setRoute(r);
v->setALtitude(a);
}
if (parameter != 1) {
v = new boat();
v->setRoute(r);
}
v->start();
请注意,船和飞机在开始前会调用不同的方法。 (启动是唯一常用的方法) 此代码将不起作用,因为 v 不包含方法 setRoute/SetALtitude。
实现此模式的正确方法是什么?
最佳答案
你可以轻松做到:
if(parameter != 1)
{
boat *b = new boat;
b->setRoute(r);
v = b;
}
和飞机
类似。
关于C++多态性和具体方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38351322/