模板函数

前言

模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。

要求用c++实现一个功能支持intdouble的相加操作并返回代码如下。

 

复制代码
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);   //自动数据类型推导

 

posted @   乐吴  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示