#include<iostream>
#include<string>
#include<typeinfo>
using namespace std;
template<class T>
class D
{
public:
D(T x,T y):m_x(x),m_y(y){}
int compare(void)
{
cout<<"Type of m_x is "<<typeid(m_x).name()<<endl;
cout<<"Type of m_y is "<<typeid(m_y).name()<<endl;
if(m_x<m_y)
return -1;
if(m_x>m_y)
return 1;
return 0;
}
private:
T m_x;
T m_y;
};
//类的模板特化
template<>class D<char*>
{
public:
D(char*x,char*y):m_x(x),m_y(y){}
int compare(void)
{
cout<<"***Type of m_x is***"<<typeid(m_x).name()<<endl;
cout<<"****Type of m_y is***"<<typeid(m_y).name()<<endl;
if(strcmp(m_x,m_y)>0)
return 1;
if(strcmp(m_x,m_y)<0)
return -1;
return 0;
}
private:
char* m_x;
char* m_y;
};
/*
//成员函数的特化
template<>
int D<char*>::compare(void)
{
cout<<"***Type of m_x is***"<<typeid(m_x).name()<<endl;
cout<<"****Type of m_y is***"<<typeid(m_y).name()<<endl;
if(strcmp(m_x,m_y)>0)
return 1;
if(strcmp(m_x,m_y)<0)
return -1;
return 0;
}*/
int main(int argc,char*argv[])
{
D<int>d1(10,20);
cout<<d1.compare()<<endl;
//
D<double>d2(0.1,0.2);
cout<<d2.compare()<<endl;
D<string>d3("good","better");
cout<<d3.compare()<<endl;
char sz1[]="courage";
char sz2[]="excellent";
D<char*>d4(sz1,sz2);//比较的是两个字符指针
cout<<d4.compare()<<endl;
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。