友元
友元 c++控制对类私有部分的访问。 友元有3种。 友元函数 例子 A = 2.34 * B; 非成员函数不是由对象调用,它使用所有值都是显式参数。 Time operator*(double m, const Time & t); 但有时候非成员函数不可以调用成员数据。然而有一种特殊的非成员函数可以访问类的私有成员,他们被称为友元函数。 友元类 友元成员函数 通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。 创建友元函数 创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend。 friend Time operator*(double m, const Time& t); 上述原型意味着一下两点。 operator*()函数是在类声明中声明的,但他不是成员函数,因此不能使用成员运算符来调用。 operator*()不是成员函数,但它与成员函数访问权限相同。 第二步是编写函数定义。 因为它不是成员函数,所以不要使用Time::限定符。另外不要再定义函数头使用friend。 当函数定义也是原型时,需要加friend关键字。 常用的友元 重载<<运算符 第一个重载版本 因为第一个操作数是ostream类对象cout,所以需要使用友元函数。 而且没有使用到ostream中的私有部分,所以只需要作为Time类的友元函数。 在类中声明friend