[英]C++ Polymorphism and specific methods
给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();
请注意,在开始之前,需要为船和飞机调用不同的方法。 (Start是唯一常用方法)此代码不起作用,因为v不包含方法setRoute / SetALtitude。
实现这种模式的正确方法是什么?
你可以轻松地做到:
if(parameter != 1)
{
boat *b = new boat;
b->setRoute(r);
v = b;
}
和airplane
类似。
class __declspec(novtable) vehicle{
public:
virtual void start();
virtual void setRoute(route r) = 0;
virtual void setAltitude(altitude a) = 0;
};
class airplane: public vehicle{
virtual void start();
virtual void setRoute(route r);
virtual void setAltitude(altitude a);
};
class boat: public vehicle{
virtual void start();
virtual void setRoute(route r);
virtual void setAltitude(altitude a);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.