100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > “模板类与友元”那些事(C++)

“模板类与友元”那些事(C++)

时间:2023-10-15 21:35:55

相关推荐

“模板类与友元”那些事(C++)

独角兽企业重金招聘Python工程师标准>>>

模版类就是类模版实例化之后的类,友元就是一种对函数访问权限的控制,通过将函数设为友元函数让其能够访问其他外部函数不能访问的"private"成员变量。

接着我们介绍一个他们结合在一起会产生什么样的结果,他们的结合分为三种情况:

1、模板类的非模板友元函数

该友元函数的特点是:

A)当该友元函数不使用类模版中的成员变量时,与一般的友元函数没有区别:

B)当该友元函数使用类模版中的成员变量时,必须为每一个基本类型定义一个友元函数,比如show<int> 和 show<double>.这两个并不是函数的重定义,属于函数重载。

测试代码如下:

2、模板类的约束友元函数

该友元函数的特点是:每一个类的具体化与友元的具体化要匹配,也就是说,int类具体化获得一个int类的友元函数,double类就具体化会获得一个double函数,int类具体化不可能获得double类函数;

要定义一个约束模板友元函数分三步:

A)在定义类之前声明友元函数模板;

B)在类中声明该友元函数模板;

C)定义友元函数,

注意,定义友元函数时形参列表中的”T“代表,具体化之后的类,并不是类的模板参数,也就是假如具体化一个模板类”A<int>“, ”T“代表”A<int>“, 并不是”int“;通过这种方式来约束该友元函数属于某个具体化之后的模板。

3、模板类的非约束友元函数

该友元函数的特点与约束友元函数相反:也就是每个类的具体化都会获得每个函数的具体化,假如具体化一个int类,在该类中仍然可以获得一个double、string、int等类的友元函数。

免费学习更多精品课程,登录乐搏学院官网/

或关注我们的官方微博微信,还有更多惊喜哦~

本文出自 “11219885” 博客,请务必保留此出处http://11229885./11219885/1791770

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。