参考:
C++模板使用介绍 http://www.kuqin.com/language/20090405/44193.html
C++ STL 学习 for_each 与仿函数 http://blog.chinaunix.net/uid-20384806-id-1954377.html
学习一项技术,就先要熟悉基本语法格式,对于C++我是半路出家。它和C不同的那些关键字,真的让人很头晕。
1.explicit constructor(); 是对于构造函数的修饰符,说明只支持显式转换
关于显式和隐式转换 http://www.diybl.com/course/3_program/c++/cppjs/20090302/156731.html
隐式转换有时会造成不确定的类型错误。
2.一个较简单的模板函数
#include <iostream>
using namespace std;
//声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小
//T可以被任何字母或者数字代替。
template <class T>
T min(T x,T y)
{ return(x<y)?x:y;}
void main( )
{
int n1=2,n2=10;
double d1=1.5,d2=5.6;
cout<< "较小整数:"<<min(n1,n2)<<endl;
cout<< "较小实数:"<<min(d1,d2)<<endl;
system("PAUSE");
}
3.有模板函数,当然也有模板类。模板类包括类的构造、类体的定义、类的使用三部分
// ClassTemplate.h
#ifndef ClassTemplate_HH
#define ClassTemplate_HH
template<typename T1,typename T2>
class myClass{
private:
T1 I;
T2 J;
public:
myClass(T1 a, T2 b);//Constructor
void show();
};
//这是构造函数
template <typename T1,typename T2>
myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}
//这是void show();
template <typename T1,typename T2>
void myClass<T1,T2>::show()
{
cout<<"I="<<I<<", J="<<J<<endl;
}
#endif
//类体的定义
//test.cpp
#include <iostream>
#include "ClassTemplate.h"
using namespace std;
void main()
{
myClass<int,int> class1(3,5);//模板类中函数的使用方法,先指明类型,再传入参数
class1.show();
system("PAUSE");
}