跳转至

ev-spdlog-override-final-formatter-001

字段 值
项目 gabime/spdlog
固定 commit 79524ddd08a4
路径 include/spdlog/pattern_formatter-inl.h
行段 L103-L113
特性 override 与 final
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-27
测试代码 否
发现方式 manual

用法

在格式化器派生类上同时使用 final 与 override

为什么典型

final 禁止继续派生,override 让签名不匹配变成编译错误,二者一起固定继承契约。

摘录

template <typename ScopedPadder>
class name_formatter final : public flag_formatter {
public:
    explicit name_formatter(padding_info padinfo)
        : flag_formatter(padinfo) {}

    void format(const details::log_msg &msg, const std::tm &, memory_buf_t &dest) override {
        ScopedPadder p(msg.logger_name.size(), padinfo_, dest);
        fmt_helper::append_string_view(msg.logger_name, dest);
    }
};

备注

生产路径;同文件数十个格式化器采用相同写法。

查看固定 commit 源码 · 返回证据索引