template<typename T> bool compare(T a,T b) { cout<<"template<typename T>bool compare(T a,T b)"<<endl; return a>b; }
int main() { compare<int>(10,20); compare(10.4,20.5);//自推为double型 return 0; }
函数模板的特例化:模板特例化优先级比普通模板高
//compare("aaa","bbb"); //如果调用普通的compare比较的是两个字符串地址,结果不可信 template<> bool compare(const char* a,const char* b) { cout<<"bool compare(const char* a,const char* b)"<<endl; return strcmp(a,b)>0;//比较ASCII码 }
//可以存放各种数据类型的模板类 template<typename T> class Arr { public: Arr(); Arr(const Arr& src); Arr& operator=(const Arr& src); ~Arr(); void push_back(const T& val); void pop_back(); T& back(); T& operator[](int pos); int size(); private: T* _arr; int _len; int _val_len; };