模板函数
前言
模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。
要求用c++实现一个功能支持int和double的相加操作并返回代码如下。
int sum(int i, int j) { return i + j; } double sum(double i, double j) { return i + j; } void main() { int i = 5, j = 10; cout << "(int a+b)" << sum(i, j) << endl; double x = 21.05, y = 20.006; cout << "(double a+b)" << sum(x, y) << endl; }
输出:
(int a+b)15
(double a+b)41.056
若还需对更多的类型数据进行此操作便会产生大量重复性功能的函数,使用模板函数即可完美解决。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | template < typename T> T sum(T i,T j) { return i + j; } void main() { int i = 5, j = 10; cout << "(int a+b)" << sum(i, j) << endl; double x = 21.05, y = 20.006; //数据类型自动推导 cout << "(double a+b)" << sum(x, y) << endl; //显示类型调用 cout << "(double a+b)" << sum< double >(x, y) << endl; } |
输出:
(int a+b)15
(double a+b)41.056
(double a+b)41.056
模板说明
template<类型形参>
类型形参:
typename T1,typename T2......typename Tn或class T1,class T2......class Tn。
注:typename与class效果相同。
函数定义:
类型 函数名(形参)
{
}
函数模板调用:
sum<int>(a, b); //显式类型调用
sum(a, b); //自动数据类型推导
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!