― 编译器从函数模板通过具体类型产生不同的函数
― 编译器会对函数模板进行两次编译
- 在声明的地方对模板代码本身进行编译
- 在调用的地方对参数替换后的代码进行编译 类模板 使得类可以不用关心具体的数据类型,只关注类需要提供的功能。 template <typename T> class MyClass { public: T add(T& a, T& b); };
template <typename T> T MyClass<T>::add(T& a, T& b) { return a + b; }