由于采用类的机制,实现了数据的封装和隐藏,类的数据成员一般设为私有类型,成员函数则为公有类型,提供与外界连接的接口,但有时需要非类成员函数频频访问类内数据成员,则将其设为该类的友元函数,简称友元,同样还有友元类,是一类需要与另一类建立联系,保持调用关系,则也可以设为该类的友元类,友元可以增加代码的灵活性,提高运行效率(类型检查和数据成员和成员函数的安全性检查会消耗时间),但同样破坏了C++的封装性,使其能够访问该类的私有成员。
友元可以分为友元函数和友元类,友元函数又可以分为友元全局函数和友元成员函数,友元关系不可传递,单向性。友元其实破坏了C++的封装性,是对封装的补充。
友元全局函数:
在主函数前面声明定义时加上friend关键字,在其关联的类的关系运算符前加上此函数的声明,并加上关键字friend
如:
friend void display() { }
class Person
{
friend void display();
public:
}
友元成员函数:
在与之关联成友元的类中要写上 如:friend void Match::printtime(Time &t);
友元类:
friend class A 的形式