如何将两个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
相关产品推荐
相关产品推荐

