当前位置: 首页 > news >正文

C++中使用类的继承机制来定义和实现基类与派生类

这段代码展示了如何在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 类的对象 ftypeftype.type = "捷豹Ftype"; // 设置对象 ftype 的车型属性ftype.run(); // 调用从父类继承来的 run 方法Bickle bike; // 创建一个 Bickle 类的对象 bikebike.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 方法只有声明而没有定义,如果尝试调用这些方法将会导致链接错误。若要使用这些方法,则需要在类外提供相应的定义。
  • 此代码示例主要是为了展示类的继承关系,实际应用中应根据需求完善各方法的具体实现。
http://www.xdnf.cn/news/658567.html

相关文章:

  • 初始化硬盘时,选MBR还是GUID?—「小白教程」
  • Linux系统中为Qt项目封装一个udp客户端类
  • 在麒麟系统(Kylin OS)上安装`geckodriver`
  • 跳板问题(贪心算法+细节思考)
  • 中国工程咨询协会新型基础设施专业委员会成立
  • Open vSwitch笔记20250526
  • 基于python合成100X100的透明背景图片和图标
  • 十大排序算法
  • 单例模式,饿汉式,懒汉式,在java和spring中的体现
  • 从数据页角度理解B+树查询
  • Netty学习专栏(五):Netty高性能揭秘(Reactor模式与零拷贝的深度实践)
  • 华为OD机试真题——单词接龙(首字母接龙)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 股指期货移仓换月技巧是什么?
  • CUDA编程笔记(1)--最简单的核函数
  • 大模型RL方向面试题90道
  • Filter和Interceptor详解(一文了解执行阶段及其流程)
  • CVE-2024-36467 Zabbix权限提升
  • java枚举和mybaits-plus结合实现映射输出和存储
  • VScode怎么运行一个c语言程序
  • ChatGPT与认知科学:人机协同的未来图景
  • STM32 IIC总线死锁问题总结
  • 洛谷——P3372 【模板】线段树 1
  • webpack吐环境分析
  • 为什么使用ollama运行的模型不用gpu也可以使用
  • [攻防世界] easyphp writeup
  • Graph Neural Network(GNN)
  • 如何通过全流量溯源分析系统实现高效的网络质量监控
  • JavaSE核心知识点04工具04-02(IDEA)
  • 关于(stream)流
  • MySQL的基础操作