c++中友元的一些总结(2)
分类: 计算机
时间: 2022-09-23 23:27:07
作者: 全国等级考试资料网
2,模板函数作友元
先给一个模板函数,它是一个模板,并不是一个函数:
1
2
template
void foo1(T);
在定义foo1为某类的友元时,或者要实例化模板参数T,或者给出可演绎的申明式,而且就算是可以演绎的,一对尖括号也不能省。如:
class A
{
public:
friend void foo1(char);
friend void foo1<>(double);
};
或者给出限制符:::
class A
{
public:
friend void ::foo1(char);
};
当然,如果有一般函数具有这种形式,那会优先于模板函数匹配。最后这里的申明式都不能是定义式,必须前至申明(定义)。
先给一个模板函数,它是一个模板,并不是一个函数:
1
2
template
void foo1(T);
在定义foo1为某类的友元时,或者要实例化模板参数T,或者给出可演绎的申明式,而且就算是可以演绎的,一对尖括号也不能省。如:
class A
{
public:
friend void foo1
friend void foo1<>(double);
};
或者给出限制符:::
class A
{
public:
friend void ::foo1(char);
};
当然,如果有一般函数具有这种形式,那会优先于模板函数匹配。最后这里的申明式都不能是定义式,必须前至申明(定义)。