Там есть этот код:Перегрузка операторов, нужно объяснение
class precision {
int digits;
public: precision(int digits) : digits(digits) {}
friend ostream& operator<<(ostream& os, const precision& p) {
os.precision(p.digits);
return os;
}
};
Это означало, чтобы сделать командную строку:
cout << precision(5) << a << " " << precision(2) << b << endl;
работать, а не делать:
cout.precision(5);
cout << a << " ";
cout.precision(2);
cout << b << endl
Я не понимаю, как работает функция функции друга. Почему это друг? И почему он получает два аргумента вместо одного? Благодарю.