——可以访问类的私有成员的非成员函数函数
将其原型放在类声明中,并在原型声明前加上关键字friendspa
friend Time operator *(double m, const Time &t); // goes in class declaration
Time operator *(double ml, const Time &t) // friend not used in definition { ... }
只有在类声明中的原型中才能使用friend。除非函数定义也是原型,不然不能在函数定义中使用该关键字blog
只有类声明能够决定哪个函数是友元,所以类声明仍然控制了哪些函数能够访问私有数据。总之,类方法和友元只是表达类接口的两种不一样的机制接口