类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
下面的内容只针对友元函数而不是友元类
首先友元函数的需要在类内部通过friend关键字进行申明
class Date
{
friend ostream& operator<<(ostream& out, const Date& d);
friend istream& operator>>(istream& in, Date& d);
}
这里细心的网友会发现,我在申明友元函数的时候没有在类的private,public,protected里申明,这是因为友元函数的申明与位置无关,且友元函数的参数必须有一个是类对象。
本人新人小白,大佬轻喷