这段代码展示了如何在C++中使用类的继承机制来定义和实现基类与派生类。以下是代码的详细解释及注释:
#include <iostream> // 导入输入输出流库,用于标准输入输出操作
using namespace std; // 使用标准命名空间,避免每次调用std::前缀
// 基类 Vehicle 定义(父类)
class Vehicle { // 交通工具,车, 抽象的概念
public:
string type; // 车型
string country; // 生产国家
string color; // 颜色
double price; // 价格
int numOfWheel; // 轮子数量
void run() { // 方法:车跑起来了
cout << "车跑起来了" << endl;
}
void stop(); // 声明了一个成员函数 stop,但没有定义
};
// 派生类 Bickle 定义(子类),从 Vehicle 继承
class Bickle : public Vehicle {
// Bickle 类通过 public 继承了 Vehicle 类的所有公有成员
// 这里没有添加新的成员或方法,直接使用父类中的成员变量和方法
};
// 派生类 Roadster 定义(子类),也从 Vehicle 继承
class Roadster : public Vehicle {
public:
int stateOfTop; // 新增成员变量:表示顶棚状态(假设为敞篷状态)
void openTopped(); // 新声明一个成员函数,用于打开敞篷,但未定义
void pdrifting(); // 另一个新声明的成员函数,可能用于漂移,同样未定义
};
int main()
{
Roadster ftype; // 创建一个 Roadster 类的对象 ftype
ftype.type = "捷豹Ftype"; // 设置对象 ftype 的车型属性
ftype.run(); // 调用从父类继承来的 run 方法
Bickle bike; // 创建一个 Bickle 类的对象 bike
bike.type = "死飞"; // 设置对象 bike 的车型属性
bike.run(); // 同样调用从父类继承来的 run 方法
return 0; // 程序正常退出
}
关键点解析
- Vehicle 类 是一个基类,它包含了关于车辆的一些基本信息和行为(如
run
方法)。注意,stop
方法被声明但没有定义。 - Bickle 类 和 Roadster 类 分别是从
Vehicle
类派生出来的两个子类。其中,Bickle
类没有新增任何成员变量或方法,而Roadster
类增加了两个成员变量stateOfTop
和两个方法声明openTopped
和pdrifting
,但这两个方法没有定义。 - 在
main
函数中,创建了Roadster
和Bickle
类的实例,并分别设置了它们的type
属性值,然后调用了从基类继承的方法run
。
注意事项
- 由于
Vehicle
类中的stop
方法以及Roadster
类中的openTopped
和pdrifting
方法只有声明而没有定义,如果尝试调用这些方法将会导致链接错误。若要使用这些方法,则需要在类外提供相应的定义。 - 此代码示例主要是为了展示类的继承关系,实际应用中应根据需求完善各方法的具体实现。