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

如何将两个const与非const输入输出的函数合并为一个?

可以合并,用函数模板实现

完全可以通过函数模板来合并这两个函数,让返回值的const属性自动匹配输入参数的const属性,无需手动编写两个重载版本。

实现代码

template <typename T>
T f(T x) {
    return x + 1;
}

原理说明

传入char*类型参数时,模板参数T会被推导为char*,函数返回值也对应为char*;传入const char*类型参数时,T会被推导为const char*,返回值自然就是const char*。这套逻辑和原来两个重载函数的行为完全一致,还避免了代码重复。

如果使用C++20及以上版本,还能用上更简洁的自动函数模板写法:

auto f(auto x) {
    return x + 1;
}

不过这种写法的兼容性不如显式模板,老版本编译器可能不支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:09:51