C++隙笔--成员模板(member template)

前言

模板主要分为三大类:

  • 类模板 (class template)
  • 函数模板(function template)
  • 成员模板(member template)

今天让我们了解一下成员模板(member template)。


何为成员模板(member template)

在此之前我们先了解一下什么是模板(template),模板可以说是C++的泛型

泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。

泛型是为编写面向对象程序增加了极大的效力和灵活性。

下面是一种函数模板的实现:

template <typename T>
inline T const& Min(T const& a, T const& b) 
{ 
    return a < b ? a:b; 
} 
int minnum = min(1,2);

由于函数的参数为int,所以min函数中所有的T都被替换成了int,让函数更具灵活性。
简单了解一下模板后让我们将目光重新放回到成员模板上来。

模板可用作结构、类或模板类的成员。这一种形式便被称为是成员模板。

template<class T1,class T2>
struct pair{
	
	T1 first;
	T2 second;
	
	pair():
		first(T1()),second(T2()){}
		
	pair(const T1& a,const T2& b):
		first(a),second(b){}

	template<class U1,class U2>
	explicit pair(const pair<U1,U2>& p):
		first(p.first),second(p.second){}
};

以上可以看到一个类模板中有个模板,这就是成员模板。

pair<Son1,Son2> s;	//这里的Son互相对应继承Base
pair<Base1,Base2> b(s);

这样就可以将Son构成的一个类的数据,存放到Base里。这就是成员模板的一种使用方法。
大量标准库的构造函数中也经常会发现成员模板。


最后

本文简单的表述了成员模板及其实现,在自己学这块时由于网上资料较少,整理了一下,可能有错误也请指出感谢!

C++隙笔--成员模板(member template)

上一篇:Laravel DB类操作数据库


下一篇:【尚筹网IDEA版】11-前台-环境配置(gradle项目)