WebStorm 服务注册中心 北斗系统 delphi web 八大员 vue开发教程 bootstrap后台管理 nginx教程视频 ubuntu查看python版本 maven配置eclipse matlab中如何定义函数 java使用redis python写脚本 python命令大全 java实例 java基本语法 java框架学习 java时间转时间戳 java代码 java字符比较 linux入门基础 linux装机 登录界面html python下载教程 acmecadconverter 灼热峡谷 EasyCHM linux解压tar 0x8002801c raid0教程 电脑基础 给视频加字幕的软件 git命令 js文件上传 win10wifi 设备管理器在哪 txplatform 三星打印机怎么加墨 ipad清理内存
当前位置: 首页 > 学习教程  > 编程语言

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

2021/1/28 23:53:49 文章标签:

前言 模板主要分为三大类: 类模板 (class template)函数模板(function template)成员模板(member template) 今天让我们了解一下成员模板(member template)。 何为成员模板(member template) 在此之前我们先了解一下什么是模板(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里。这就是成员模板的一种使用方法。
大量标准库的构造函数中也经常会发现成员模板。


最后

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


本文链接: http://www.dtmao.cc/news_show_650319.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?