有这段代码:
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
我无法理解朋友功能部分的工作原理。为什么这是朋友?为什么它会收到两个参数而不是一个?感谢。
答案 0 :(得分:0)
这是朋友,因此可以访问私人值digits
。
这两个参数来自编译器将cout << precision(5)
与调用operator<<(cout, precision(5))
匹配。然后,运算符返回流的refence,用于下一部分stream << a
等。