首页 > 学院 > 开发设计 > 正文

模板类与友元函数

2019-11-08 01:28:39
字体:
来源:转载
供稿:网友

模板的友元可以分为三类:

非模板友元约束模板友元,即友元的类型取决于类被实例化时的类型非约束模板友元,即友元的所有具体化都是类的每一个具体化的友元

1. 模板类的非模板友元,即该友元函数不存在模板,但是该友元函数声明于一个模板类中。

图1

如果没有需要模板类参数,这与普通的类中的友元函数没啥差别。

图2图3
由于不存在对象A,而只存在A<T> 即该模板类的一个实例,所以上图中是一个错误的事例,机会出现图三所示的相关提醒。

图4

如果该友元函数需要该模板类参数,就将与约束模板友元类似了。因为该函数将与实例化的模板相关。

2. 约束模板友元,即该友元函数自身是一个模板函数,并且受到该模板类的约束。

图5

需要在模板类之前声明模板函数。图5中可以看出,友元函数均与每一个具体的实例化相关,即会根据模板类中的类型T变换而变换。 

3. 非约束模板友元,该友元函数存在模板,但是并不受该模板类的约束。

图6

该模板友元函数的声明放在了模板类中,且该友元函数模板类型与模板类的类型并没有相同之处,也就不会受到模板类的约束。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表