ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-01-29 00:01:14  阅读:253  来源: 互联网

标签:const -- 成员 C++ member second template pair 模板


前言

模板主要分为三大类:

  • 类模板 (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里。这就是成员模板的一种使用方法。
大量标准库的构造函数中也经常会发现成员模板。


最后

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

标签:const,--,成员,C++,member,second,template,pair,模板
来源: https://blog.csdn.net/qq_33985931/article/details/113360406

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有