友元函数
创建友元的第一步就是将其原型放在类声明中,并在原型前面加上关键字friend
class Time { public: friend Time operator*(double m, const Time & t); }
该原型意味着以下两点:
- 友元函数虽然是在类中声明的,但是它不是类的成员函数
- 友元函数虽然不是类的成员函数,但是它与类成员函数的访问权限相同
由于友元函数不是类成员函数,所以友元函数定义时不用使用Time::限定符。
Time operator*(double m, const Time & t) { ... }
用友元函数重载cout
std::ostream & operator<<(std::ostream & os, const Time & t) { os<<"hours: "<<t.hours<<", minutes: "<<t.minutes<<std::endl; return os; }