如何在C++中编写支持任意类型参数的打印函数(含双参数场景)
解决方案:用C++函数模板实现通用打印函数
完全可以实现,只需要借助C++的函数模板特性,仅修改printValues的参数声明部分即可。
修改后的函数参数及模板声明如下:
template<typename T1, typename T2> void printValues(T1 val1, T2 val2)
完整的可运行代码:
#include <iostream> using namespace std; template<typename T1, typename T2> void printValues(T1 val1, T2 val2) { cout << val1 << " " << val2 << endl; } int main() { printValues(10, 20); printValues(30, "Hello"); printValues(2.5, 7.5); return 1; }
原理说明
函数模板通过template<typename T1, typename T2>声明两个通用类型参数,编译器会根据每次调用printValues时传入的实际参数类型,自动推导T1和T2的具体类型,并生成对应类型的函数实例。比如:
- 调用
printValues(10, 20)时,生成处理两个int类型的函数版本 - 调用
printValues(30, "Hello")时,生成处理int和const char*类型的函数版本 - 调用
printValues(2.5, 7.5)时,生成处理两个double类型的函数版本
这样既满足了接受任意数据类型组合的需求,又没有修改原代码中除函数参数外的其他部分。
内容的提问来源于stack exchange,提问作者Bathrinath V
相关产品推荐
相关产品推荐

