【发布时间】:2017-01-12 19:43:12
【问题描述】:
假设我有这段代码:
class Vehicle {
virtual const char* media() const = 0;
virtual unsigned speed() const = 0;
} V, *PV;
class LandVehicle : public Vehicle {
const char* media() const override{ return "Land";}
} L, *PL;
class Train : public LandVehicle{
virtual unsigned speed() const override {return 130;}
} T, *PT;
我有几个问题:D
1) LandVehicle 没有实现 speed()。这是一个错误,如果是这样,什么样的错误?还是只是让它成为一个抽象类?
2) 方法 media() 中的 LandVehicle 类中的关键字 override 使用是否正确?作为抽象类的派生类,它真的覆盖了方法吗?
3) 与 Train 的 speed() 方法中 override 的 2 相同。
4) 现在 Train 是一个具体的类吗?
5) LandVehicle 的 media() 方法声明中是否需要添加关键字virtual?
6) 如果我在 Train 类中添加此方法:
const char* media() const{ return "Just a train";}
它是隐藏 LandVehicle 的 media() 还是覆盖它?
7) 添加6中的方法后,可以在Train类中访问LandVehicle的media()吗?
【问题讨论】:
-
问题太多了,大部分你自己测试一下就能很快找到答案。
-
你试过自己研究这个吗?您发现了什么,它如何未能回答您的问题?
-
我同意这里。快速编写代码/测试输出通常比在 stackoverflow 上输入代码/问题还要快。
标签: c++ inheritance