友元(运算符重载深入)

友元函数

创建友元的第一步就是将其原型放在类声明中,并在原型前面加上关键字friend

class Time
{
public:
         friend Time operator*(double m, const Time & t);
}

该原型意味着以下两点:

  1. 友元函数虽然是在类中声明的,但是它不是类的成员函数
  2. 友元函数虽然不是类的成员函数,但是它与类成员函数的访问权限相同

由于友元函数不是类成员函数,所以友元函数定义时不用使用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;
}

 

posted @ 2019-06-24 12:26  xd_xumaomao  阅读(832)  评论(0编辑  收藏  举报