【C++】模板如何使用

模板是c++的高级特性分为:

  • 函数模板。
  • 类模板。

c++标准模板库(STL) 

//函数模板一般格式
/*
template <类型形式参数表> 返回值 函数名(形式参数,...){

    //函数体
}
*/

// template 关键字
// <> 表示模板参数(两种)
//            1.类型参数(class / typedef)
//            2.非类型参数(一般为常数)

#include<iostream>
using namespace std;

template <class Type> 
Type max_us(Type x, Type y) {


	return x > y ? x : y;
}
int main() {
	
	int i = max_us(8, 9);

	cout << i << endl;
	return 0;
}

如果两数类型不一致,便会有歧义,编译器不能识别。例如:

//歧义
	//显示标识模板
	float k = max_us<float>(8.1, 3);

 需要添加显示标识符。

函数模板是一个“框架”,它不是真正可以编译生成代码的程序,而模板函数是把函数模板中的类型参数实例化后生成的函数,它和普通函数本质是相同的,可以生成可执行代码。

 数组模板使用:

//数组模板
template <class Type,int len>

Type max_arr(Type arr[len]) {

	Type ret = arr[0];
	for (int i = 1; i < len; i++)
	{
		ret = (arr[i] > ret ? arr[i] : ret);
	}
	return ret;
}
//数组模板使用
	int max_a = max_arr<int, 5>(a);

	
	cout << max_a << endl;

 重载模板使用:

//重载函数模板,实现字符、字符串比较
char* max_us(char* a, char* b) {

	
	if (strcmp(a,b))
	{
		return a;
	}
	else
	{
		return b;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_41865104/article/details/108032413