为何需要友元:
在为类重载二元运算符(有两个参数的运算符)时,常常需要友元。
比如自己写的Time类,乘法运算符中,可以这样写:
A = B * 2;
这种写法会被转化为:A = B.operator*(2);
但是这种写法就有问题了:
A = 2 * B;
友元的作用就体现出来了:
友元:非成员函数,但访问权限与成员函数一样。
声明如下:
friend Time operator*(double m, const Time &t);
函数定义如下:
因为其不属于Time类,所以不需要加Time::。
Time operator*(double m, const Time &t) {
//do sth
}