c++学习:函数模板+实战

文章介绍了C++中的函数模板,如何通过template关键字创建通用函数void_swap和T_max,用于处理不同类型参数的交换和找到最大值。同时,展示了在类中使用模板函数以及模板函数的正确放置方式。
摘要由CSDN通过智能技术生成

目录

函数模板

思考

如果两个参数的类型不一样可以下面这么写

如果有指定返回参数可以下面这么写

实战 找出三个数中最大的一个


函数模板

  • 实际上就是建立一个通用函数,其函数返回值类型和形参类型不具体指定,用一个虚拟的类型来代表
  • template 是一个关键字 ,表示下面定义的是一个模板
  • typename 也是一个关键字,后面跟的T是一个虚拟的数据类型,可以用class来代替
  • 其函数返回值数据类型 和 形参的数据类型 不具体指定,用一个虚拟的类型在代表

思考

void _swap(int &a,int &b)
{
    a = a+b;b=a-b;a=a-b;
}
void _swap(double &a,double &b)
{
    a = a+b;b=a-b;a=a-b;
}
void _swap(char &a,char &b)
{
    a = a+b;b=a-b;a=a-b;
}

不断重写swap函数,太过麻烦

我们可以建立一个通用板的函数

template<typename T>
void _swap(T &a,T &b)
{
    cout<<"template"<<endl;
    a = a+b;b=a-b;a=a-b;
}

int a = 10,b=20;
当_swap(a,b);调用后
会自动生成void _swap(int  &a,int  &b)

如果两个参数的类型不一样可以下面这么写

template<typename T,typename Tx>
void _swap(T &a,Tx &b)
{
    cout<<"template"<<endl;
    a = a+b;b=a-b;a=a-b;
}

如果有指定返回参数可以下面这么写

template<typename T=int>
T _max(T a,T b)
{
    T c;
    return a>b?a:b;
}

int a = 10,b=20;
_max<int>(a,b);---->int _max(int a,int b)

实战 找出三个数中最大的一个

template<typename T>
T _max(T a,T b,T c)
{
    return a>b ? (a>c?a:c) : (b>c?b:c);
}

cout<<max<int>(10,20,30)<<endl;

如果在类中实现

class Max
{
public:
    Max();
    template<typename T>
    T max(T a,T b,T c);
};

如果有max.cpp  max.h,那下面模板函数定义一定要放到.h里,上面的也可以放到.h里
template<typename T>
T Max::max(T a,T b,T c)
{
    return a>b ? (a>c?a:c) : (b>c?b:c);
}

调用方法如下
    Max mya;

    cout<<mya.max<int>(10,20,30)<<endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值