模版类就是类模版实例化以后的类,友元就是一种对函数访问权限的控制,经过将函数设为友元函数让其可以访问其余外部函数不能访问的"private"成员变量。微信
接着咱们介绍一个他们结合在一块儿会产生什么样的结果,他们的结合分为三种状况:函数
一、模板类的非模板友元函数学习
该友元函数的特色是:测试
A)当该友元函数不使用类模版中的成员变量时,与通常的友元函数没有区别:spa
B)当该友元函数使用类模版中的成员变量时,必须为每个基本类型定义一个友元函数,好比show<int> 和 show<double>.这两个并非函数的重定义,属于函数重载。.net
测试代码以下:code
1blog 2ci 3get 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
二、模板类的约束友元函数
该友元函数的特色是:每个类的具体化与友元的具体化要匹配,也就是说,int类具体化得到一个int类的友元函数,double类就具体化会得到一个double函数,int类具体化不可能得到double类函数;
要定义一个约束模板友元函数分三步:
A)在定义类以前声明友元函数模板;
B)在类中声明该友元函数模板;
C)定义友元函数,
注意,定义友元函数时形参列表中的”T“表明,具体化以后的类,并非类的模板参数,也就是假如具体化一个模板类”A<int>“, ”T“表明”A<int>“, 并非”int“;经过这种方式来约束该友元函数属于某个具体化以后的模板。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
三、模板类的非约束友元函数
该友元函数的特色与约束友元函数相反:也就是每一个类的具体化都会得到每一个函数的具体化,假如具体化一个int类,在该类中仍然能够得到一个double、string、int等类的友元函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
免费学习更多精品课程,登陆乐搏学院官网http://www.learnbo.com/
或关注咱们的官方微博微信,还有更多惊喜哦~
本文出自 “11219885” 博客,请务必保留此出处http://11229885.blog.51cto.com/11219885/1791770