泛型编程

发布时间 2023-12-20 19:15:29作者: 采集的东曦

泛型编程:使用模板,编写跟类型无关的代码。

一个函数和类的时候,针对不同类型需要写很多重复的代码。

函数:比如我们想实现交换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;...}