【问题标题】:Operator overloading, need an explanation [duplicate]运算符重载,需要解释
【发布时间】:2016-11-22 09:10:08
【问题描述】:

有这个代码:

 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

我不明白朋友功能部分是如何工作的。为什么是朋友?它为什么会收到两个参数而不是一个?谢谢。

【问题讨论】:

    标签: c++ operator-overloading


    【解决方案1】:

    它是一个朋友,因此它可以访问私有值digits

    这两个参数来自与cout &lt;&lt; precision(5) 匹配到调用operator&lt;&lt;(cout, precision(5)) 的编译器。然后操作符返回对流的引用,该引用用于下一部分stream &lt;&lt; a 等。

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      相关资源
      最近更新 更多