关注“杜明c”,每天进步一点点!
我们学习C++,就常常有人提起泛型编程,什么是泛型编程?我就给大家简单聊一聊。
摘要-
什么是泛型编程
为什么使用泛型编程
使用方法
泛型编程,简而言之,就是在编程中使用不明确的数据类型,他最大的一个特点就在这个“泛”字,让一套源码适用不同类型的元素。那么这个泛型编程具体什么作用呢?比如我们要我们要写一个求两个数的最大值的函数,一般来说我们都这么实现。
int max(int a, int b){ return a>b?a:b;}
一旦数据的类型发生改变,那么代码就得改一改,这依然很好实现,利用用函数的重载就可以实现。
double max(double a,double b){ return a>b?a:b;}
为什么要使用泛型编程可是当要求是float型数据的时候,我们就需要添加更多的代码,这无疑增加了很多繁琐的工作,
这时候函数模板就派上了用场。
template <typename T> //定义一个类型TT max(T a, T b) //函数定义{ return a>b?a:b;}cout << max<int>(1,5) << endl;//函数调用----out----5
使用一个函数模板就可以实现这个函数,让我们专注于逻辑实现,而不是繁琐的重复工作。
使用方法除了函数模板之外,我们还可以使用类模板,他们的用法是一样的。
函数模板
类模板
template //函数模板T max(T a, T b) { return a>b?a:b;}class base {public: base(T new_a) { a = new_a; } T a; T fun() { return a; }};
那么怎么使用呢?其实也很简单。
base<int> a(4);cout << a.fun() << endl;cout << max<int>(1,4) << endl;----out----44
下一章应用篇,说的是使用类模板构造一个vector容器,有兴趣的同学可以看看。
留言区
End
杜明c
专注C/C++
长按关注