模板-函数模板基本语法

#include<iostream>
using namespace std;

//函数模板
template<typename T>
void mySwap(T& a, T& b)
{
	T temp = a;
	a = b;
	b = temp;
}

void test01()
{
	int a = 10;
	int b = 20;

	//两种方式使用函数模板

	//1、自动类型推导
	//mySwap(a, b);

	//2、显示指定类型
	mySwap<int>(a, b);
	cout << "a= " << a << endl;
	cout << "b= " << b << endl;
}
int main()
{
	test01();
}

当我们需要编写能够处理多种数据类型的函数时,函数模板就显得格外重要。C++中的函数模板允许我们编写一个通用的函数,可以接受不同类型的参数,从而实现代码的复用和灵活性。

函数模板基本语法

1. 声明函数模板

函数模板的声明使用 template 关键字加上模板参数列表来定义。模板参数列表用尖括号 < > 括起来,参数可以是类型参数或者非类型参数。

template <typename T>
void myFunction(T arg);

在上面的例子中,T 是一个类型参数,表示函数 myFunction 接受一个类型为 T 的参数 arg

2. 定义函数模板

函数模板的定义与普通函数类似,但在函数名后面要紧跟模板参数列表的定义。

template <typename T>
void myFunction(T arg) {
    // 函数体
}

在函数体内,可以使用类型参数 T 来处理参数 arg,例如可以对 arg 进行算术操作、函数调用等。

3. 实例化函数模板

函数模板本身并不是一个具体的函数,它仅仅是一个通用的模板。要使用函数模板处理特定类型的数据,需要进行实例化。实例化是通过在函数调用时指定具体的类型来完成的。

int main() {
    myFunction(5);      // 编译器实例化 myFunction<int>(5);
    myFunction(3.14);   // 编译器实例化 myFunction<double>(3.14);
    myFunction('a');    // 编译器实例化 myFunction<char>('a');
    return 0;
}

在实例化时,编译器会根据函数参数的类型自动推断出需要调用的函数模板版本,并生成相应的代码。

4. 多个模板参数

函数模板可以有多个模板参数,这些参数可以是类型参数、非类型参数或模板模板参数(template template parameters)。

template <typename T, typename U>
T add(T a, U b) {
    return a + b;
}

在上面的例子中,函数模板 add 接受两个参数 ab,分别是类型 TU,并且返回类型为 T

5. 类型推断

在大多数情况下,编译器能够根据函数参数推断出模板参数的类型,因此可以省略模板参数的显式指定。

int result = add(3, 4.5);   // 编译器推断 T 为 int, U 为 double
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值