重载运算符:第一个参数对应左操作数,第二个参数对应右操作数

Overloading Operators: Does the 1st parameter correspond to the left operand and the 2nd one to the right operand?

本文关键字:操作数 参数 第二个 运算符 重载 第一个      更新时间:2023-10-16

在编写非成员函数以重载运算符时,第一个参数对应左操作数,第二个参数对应右操作数吗?

我试图让"<<"运算符过载,以便像这样使用它:

stream << ClassA << ClassB

下面是一个示例,其中FeetInches是一个具有成员变量feetinches的类。

这就是这个参数顺序工作的原因吗:

ostream &operator<<(ostream &strm, const FeetInches &obj)
{
   strm << obj.feet << " feet, " << obj.inches << " inches";
   return strm;
}

--

但是这个参数顺序不起作用?

ostream &operator<<(const FeetInches &obj, ostream &strm)
{
   strm << obj.feet << " feet, " << obj.inches << " inches";
   return strm;
}

是的,一切都如您所说。

ostream排在第一位,因为我们这里没有任何调用对象。

ostream &operator<<(ostream &strm, const FeetInches &obj)
{
   strm << obj.feet << " feet, " << obj.inches << " inches";
   return strm;
}

因为CCD_ 5将被解释为CCD_。