友元函數
創建友元的第一步就是將其原型放在類聲明中,並在原型前面加上關鍵字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; }