网上学习来的例子:
#include <string.h>
#include <iostream>
using namespace std;
template <typename T> class Stack;
template <typename T> class StackItem
{
public:
T info;
StackItem *next;
StackItem(T x)
{
info = x;
next = NULL;
}
friend class Stack<T>;
};
template <typename T> class Stack
{
StackItem<T> * top;
public:
Stack()
{
top = NULL;
}
void push(T x)
{
StackItem<T> *p = new StackItem<T>(x);
p->next = top;
top = p;
}
T pop()
{
if(top == NULL)
{
throw 1;
}
StackItem<T> * p = top;
top = top->next;
T x = p->info;
delete p;
return x;
}
};
int main()
{
Stack<double> a;
a.push(1.3);
a.push(9);
cout << a.pop() << endl;
cout << a.pop() << endl;
return 0;
}
输出:
pateo@pateo-B86N53X:~/work/study$ g++ main.cc -o main
pateo@pateo-B86N53X:~/work/study$ ./main
9
1.3
pateo@pateo-B86N53X:~/work/study$
#include <string.h>
#include <iostream>
using namespace std;
template <class T>
class Base
{
public :
T a ;
Base(T b)
{
a = b ;
}
T getA(){ return a ;} //类内定义
void setA(T c);
};
template <class T> //模板在类外的定义
void Base<T>::setA(T c)
{
a = c ;
}
int main(void)
{
Base <int>b(4);
cout<<b.getA()<<endl;
Base <double> bc(4);
bc.setA(4.3);
cout<<bc.getA()<<endl;
return 0 ;
}
输出:
pateo@pateo-B86N53X:~/work/study$ g++ main.cc -o main
pateo@pateo-B86N53X:~/work/study$ ./main
4
4.3
pateo@pateo-B86N53X:~/work/study$
#include <string.h>
#include <iostream>
using namespace std;
template <class T>
class Base
{
public :
T a ;
Base(T b)
{
a = b ;
}
T getA(){ return a ;} //类内定义
void setA(T c);
static int count(){return ctr;}
private :
static int ctr;
};
template <class T> int Base<T>::ctr = 5;
template <class T> //模板在类外的定义
void Base<T>::setA(T c)
{
a = c ;
}
int main(void)
{
Base <int>b(4);
cout<<b.getA()<<endl;
Base <double> bc(4);
bc.setA(4.3);
cout<<bc.getA()<<endl;
Base <int>c(6);
cout<<c.count()<<endl;
return 0 ;
}
输出:
pateo@pateo-B86N53X:~/work/study$ g++ main.cc -o main
pateo@pateo-B86N53X:~/work/study$ ./main
4
4.3
5
pateo@pateo-B86N53X:~/work/study$