You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中需重写无参纯虚read()时,已有同功能带参函数该如何处理?

问题解答

首先明确:你必须重写那个无参的纯虚函数read()——C++规定包含纯虚函数的类属于抽象类,派生类必须实现所有纯虚函数才能被实例化,否则无法创建该类的对象。

不过你不需要重复编写业务逻辑,直接在重写的无参read()里调用已有的带参版本即可,核心是给两个参数提供符合业务场景的默认值,示例代码如下:

// 重写基类的纯虚函数,必须加override关键字做编译检查
void read() override {
    // 根据你的实际场景传入默认参数,比如ROS2环境下的当前时间+默认周期
    rclcpp::Time default_time = rclcpp::Clock().now();
    rclcpp::Duration default_period = rclcpp::Duration::from_seconds(1.0); // 示例周期设为1秒
    read(default_time, default_period); // 复用已实现的带参函数逻辑
}

额外注意两点:

  • 重写时务必加上override关键字,编译器会帮你校验函数签名是否和基类纯虚函数完全匹配,避免因参数、返回值不一致导致的隐式错误。
  • 默认参数的取值要贴合你的实际业务需求,比如周期长度、时间基准等,不能随便填无效值。

内容的提问来源于stack exchange,提问作者Edvard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:20:38