打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
类的特化
#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;
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
模板的特化与偏特化
模板的全特化与偏特化
C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
STL模板c++类模板的通用版本局部特化和完全特化
如何在C++中获得完整的类型名称
178 f0603
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服