这个程序哪里错了?
#include "stdafx.h"
using namespace std;
template<typename T>
T Max(T a,T b){return a>=b?a:b;}
template<typename T>
T *Max(T *a,T *b){return *a>=*b? a:b;}
template<>
char *Max(char *a,char *b)
{return strcmp(a,b)>=0?a:b;}
//char *Max(char *a,char *b){return strcmp(a,b)>=0?a:b;}
void main()
{double d3=3.3,d5=5.5;
cout<<Max(3,5)<<' '<<*Max(&d5,&d3)<<endl;
cout<<Max("ABC","ABD")<<endl;
cout<<Max("ABD","ABC")<<endl;
system("pause");
}
教程上说应该输出
5 5.5
ABD
ABD
而我用VS.NET 2003编译后输出的是
5 5.5
ABC
ABD
why?