1、模版
template<typename T>
void Swap(T& left, T& right)
{
T tmp = left;
left = right;
right = tmp;
}
template<class T>
class Stack
{
public:
Stack(int capacity = 0)
{
_a = new T[capacity];
_capacity = capacity;
_top = 0;
}
~Stack()
{
cout << "~Stack()" << endl;
delete[] _a;
_capacity = 0;
_top = 0;
}
void Push(const T& x)
{}
private:
T* _a;
int _top;
int _capacity;
};
int main()
{
Stack<int> st1;
st1.Push(1);
Stack<double> st2;
st2.Push(2.2);
return 0;
}
- 模版不支持声明和定义放到.h 和 .cpp 两个文件中,一般是放到一个文件中
1.1、模版的显式实例化
int main(void)
{
int a = 10;
double b = 20.0;
Add<int>(a, b);
return 0;
}