c++代码:函数重载_template模板的使用

在定义函数的时候,只定义一种类别的函数在不同数据类型中被调用,显示的结果如下:

#include<iostream>
int maxValue(int a, int b) {
	return a > b ? a : b;
}
int main() {
	int a = 3, b = 9;
	std::cout << "Max Value(Integer):" << maxValue(a, b) << std::endl;
	float f1 = 3.5, f2 = 3.9;
	std::cout << "Max Value(Float):" << maxValue(f1, f2) << std::endl;
	char ch1 = 'c', ch2 = 'd';
	std::cout << "Max Value(Char):" << maxValue(ch1, ch2) << std::endl;
}

 我们可以看到,最后的结果都是整数的形式,因此一种函数的定义是不够的。

#include<iostream>
int maxValue(int a, int b) {
	return a > b ? a : b;
}
float maxValue(float a, float b) {
	return a > b ? a : b;
}
char maxValue(char a, char b) {
	return a > b ? a : b;
}
int main() {
	int a = 3, b = 9;
	std::cout << "Max Value(Integer):" << maxValue(a, b) << std::endl;
	float f1 = 3.5, f2 = 3.9;
	std::cout << "Max Value(Float):" << maxValue(f1, f2) << std::endl;
	char ch1 = 'c', ch2 = 'd';
	std::cout << "Max Value(Char):" << maxValue(ch1, ch2) << std::endl;
}

重新添加定义函数后的结果如下:

 我们会发现如果类别越多,定义的函数也越多,会显得比较累赘。

这时候使用函数模板template就表现的很方便了

代码如下:

#include<iostream>
/*
int maxValue(int a, int b) {
	return a > b ? a : b;
}
float maxValue(float a, float b) {
	return a > b ? a : b;
}
char maxValue(char a, char b) {
	return a > b ? a : b;
}
*/
template<typename T> T maxValue(T a, T b) {
	return a > b ? a : b;
}

int main() {
	int a = 3, b = 9;
	std::cout << "Max Value(Integer):" << maxValue(a, b) << std::endl;
	float f1 = 3.5, f2 = 3.9;
	std::cout << "Max Value(Float):" << maxValue(f1, f2) << std::endl;
	char ch1 = 'c', ch2 = 'd';
	std::cout << "Max Value(Char):" << maxValue(ch1, ch2) << std::endl;
}

 然后我们还可以添加const和&表示引用,不是新的变量产生,const保证值不被修改

#include<iostream>
/*
int maxValue(int a, int b) {
	return a > b ? a : b;
}
float maxValue(float a, float b) {
	return a > b ? a : b;
}
char maxValue(char a, char b) {
	return a > b ? a : b;
}
*/
template<typename T> 
T maxValue(const T& a, const T& b) {
	return a > b ? a : b;
}

int main() {
	int a = 3, b = 9;
	std::cout << "Max Value(Integer):" << maxValue<int>(a, b) << std::endl;
	float f1 = 3.5, f2 = 3.9;
	std::cout << "Max Value(Float):" << maxValue<float>(f1, f2) << std::endl;
	char ch1 = 'c', ch2 = 'd';
	std::cout << "Max Value(Char):" << maxValue<char>(ch1, ch2) << std::endl;
}

猜你喜欢

转载自blog.csdn.net/qq_34904125/article/details/125550745