泛型编程:使用模板,编写跟类型无关的代码。
一个函数和类的时候,针对不同类型需要写很多重复的代码。
函数:比如我们想实现交换int、double、char等等各种类型对象的函数swap
类:比如想实现一个数据结构栈Stack , Stack的多个对象,st1存int st2存double,等等。
在没有模板之前,我们得针对各个类型写很多个swap函数和Stack类,而这些函数和类,逻辑是一样的,只是处理对象的类型不同
1、函数模板
template<class T> void swap(T &a , T & b){...}
2、类模板
template<class T> class Stack { private: T* _a; size_t _size; size_t capacity; }
3、模板的原理
编译器根据调用函数模板和类模板的类型,实例化出对应的函数类
int x1, x2; swap(x1 , x2); double x3 , x4; swap(x3 , x4); stack<int> st1; stack<double> s2;
实例化-----根据模板出函数和类
模板不会被编译指令放到代码段
编译器编译是把实例化生成的函数和类放到进程的代码段去执行
void swap(int &a , int &b){} void swap(double &a , double &b){} class stack{int *_a;...}; class stack{double *_a;...}
标签:函数,int,double,编程,swap,泛型,stack,模板 From: https://www.cnblogs.com/lyp20010104books/p/17917294.html