函数模板(function template)

描述:

函数模板做的事情就是将函数的参数类型进行抽象化,如下面代码写到的,这是将两个类进行比较,取最小的,这个类可能是int、long、double、复数、年龄类等,如果在一个工程里,多个类都涉及到这种比较,就需要对每个类都写一次这样的比较函数。

因此,函数模板就是为了解决类似问题,当算法一样时,只是参数类型不一样时,将参数类型进行抽象,写出通用函数,这就是函数模板。

#include <iostream>
using namespace std;

template <typename T>
T min(T A, T B)
{
	return (A < B) ? A : B;
}

int main()
{
	cout << "min:" << min(10, 8);
	return 0;
}

当然,读者可能还会关心,模板是如何工作的,编译器是如何识别模板?

请看上述代码,当代码编译到:

        cout << "min:" << min(10, 8);

编译器就会去找min的函数定义,发现没有找到匹配类型的函数,只找到了一个函数模板  

        T min(T A, T B)

这时,编译器就会尝试将min(10,8)往   T min(T A, T B)推导,发现该函数模板符合,T就是int,推导成功,

此时,编译器获得的代码就是

int min(int A, int B)

{

        return (A < B) ? A : B;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值