型别参数
非型别参数
#include <iostream>
using namespace std;
template<class memtype> //这里用class 和 typename 都行。细微的差别太复杂了啊。csdn 里有牛人。
class lingyun
{
public:
lingyun(memtype ele):_value(ele){}; //这样也可以的。
memtype getvalue();
bool setvalue(memtype value);
void print(); //声明了,没定义。只要不调用就可以编译运行。
private:
memtype _value;
};
/*
template<typename memtype>
lingyun<memtype>::lingyun(memtype ele)
{
_value = ele;
}
*/
template<typename memtype2> //这里确实可以用其他的参数名称,例如memtype2
inline memtype2 lingyun<memtype2>::getvalue()
{
return _value;
}
template<typename memtype3>
inline bool lingyun<memtype3>::setvalue(memtype3 value) //vc 6在这里有小问题。
{
_value = value;
}
template<int parm1,long parm2,typename T >
class tree
{
public:
tree(int con):_value1(con),_value2(parm2){};
int get();
void set(int test){_value1 = test};
private:
int _value1;
int _value2;
};
template<int parm1,long parm2,typename T> //这种混合的东西也行。template 真的是功能强大啊。
int tree<parm1,parm2,T>::get()
{
return _value2;
}
int main(int argc, char* argv[])
{
lingyun<string> person("wgm");
tree<8,9,int> apple(18);
cout<<apple.get();
//printf("Hello World!\");
return 0;
}