- 函数模板
- 类模板
基本语法
template
templatevoid Swap( T& left, T& right) { T temp = left; left = right; right = temp; }
隐式实例化:
templateT Add(const T& left, const T& right) { return left + right; } int main() { int a1 = 10, a2 = 20; double d1 = 10.0, d2 = 20.0; Add(a1, a2); Add(d1, d2); }
显式实例化
int main()
{
int a = 10;
double b = 20.0;
Add(a, b);
return 0;
}
ps:
int main()
{
int a = 10;
double b = 1.1;
Add(a, b);//当参数不是同类型时就会报错
}
类模板
基本语法
templateclass 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 st1; // int st1.Push(1); Stack st2; // double st2.Push(2.2); return 0; }



