一个简单的泛型编程例子

template <typename T>
void myswap(T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
 
template:告诉编译器,即将开始泛型编程
typename T:告诉编译器后面代码中,T是一个泛指类型。
 
― 编译器并不是把函数模板处理成能够处理任意类型的函数
― 编译器从函数模板通过具体类型产生不同的函数
― 编译器会对函数模板进行两次编译
  - 在声明的地方对模板代码本身进行编译
  - 在调用的地方对参数替换后的代码进行编译
 
 
类模板
使得类可以不用关心具体的数据类型,只关注类需要提供的功能。
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;
}
posted @ 2021-12-23 12:51  ~星辰0111~  阅读(40)  评论(0编辑  收藏  举报