多种类型判断,我们由2种方法:①函数重载;②函数模板。如果类型多的话,函数重载需要写很多函数,显得比较麻烦,所以可以使用函数模板。
函数模板是生成函数的模板。在编译阶段编译器会根据函数模板的使用情况创建出函数名相同,参数类型由编译器判断的若干函数。通过函数模板创建的函数拥有相同的函数体,只是函数的参数类型不同。
#include "stdafx.h"
#include <iostream>
using namespace std;
template<typename T>
bool equalFun(T num1, T num2);
//函数模板
template<typename T>
bool equalFun(T num1, T num2)
{
return num1 == num2;
}
//函数模板特化
template<>
bool equalFun<char*>(char* s1, char* s2)//这边特化,把上面的T换成特化类型
{
return strcmp(s1, s2) == 0;
}
int main()
{
if (equalFun(1, 1))
{
cout << "int-equal" << endl;
}
else
{
cout << "int-not equal" << endl;
}
cout << "-----------------------------------" << endl;
if (equalFun("aa","aaa"))
{
cout << "char-equal" << endl;
}
else
{
cout << "char-not equal" << endl;
}
return 0;
}
运行结果如下: