c++中友元的一些总结(3)
分类: 计算机
时间: 2023-06-03 18:17:32
作者: 全国等级考试资料网
3,模板类里的友元
模板类里也能申明2中的友元,但是模板类有模板参数,如果利用了这个模板参数的友元申明,就属这种情形。
template
class A
{
public:
friend void foo1(T);
};
但是,在这里,必须要求foo1在这里是可见的,即不能是首次申明式。如果不使用模板参数,那会是一种有趣的情形。
template
class A
{
public:
friend void foo(){}
};
注意这里是一个定义式,它定义了一个::foo()函数为该模板类的友元,在该模板类具现的时候,::foo()也被具现出来,即:
A a1;// ::foo()首次定义
A a2;// ::foo()第二次定义,违背C++一次定义原则
模板类里也能申明2中的友元,但是模板类有模板参数,如果利用了这个模板参数的友元申明,就属这种情形。
template
class A
{
public:
friend void foo1
};
但是,在这里,必须要求foo1在这里是可见的,即不能是首次申明式。如果不使用模板参数,那会是一种有趣的情形。
template
class A
{
public:
friend void foo(){}
};
注意这里是一个定义式,它定义了一个::foo()函数为该模板类的友元,在该模板类具现的时候,::foo()也被具现出来,即:
A
A