这道题要用的是模板的具体化(废话看题目就知道啦)。(嗯具体化是template< >,实例是template Type Func_Name < >)只要具体化char* 和T* 就可以了。
#pragma warning (disable:4996)
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
template <typename T>
bool cmp(T a, T b)
{
return a == b;
}
template <typename T>
bool cmp(T* a, T* b)
{
return *a == *b;
}
template <> bool cmp(char* a, char* b)
{
return !strcmp(a, b);
}
int main()
{
int aInt = 1, bInt = 1;
double aDouble = 3.0, bDouble = 3.0;
char aChars[5] = "haha", bChars[5];
string aStr = "haha", bStr = "aha";
int* aIntPtr = &aInt, *bIntPtr = &bInt;
cout << boolalpha << cmp(aInt, bInt) << endl;
cout << cmp(aDouble, bDouble) << endl;
strcpy(bChars, aChars);
cout << cmp(aChars, bChars) << endl;
cout << cmp(aStr, bStr) << endl;
cout << cmp(aIntPtr, bIntPtr) << endl;
}