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);
}
};
备注¶
生产路径;同文件数十个格式化器采用相同写法。