ipk*_*iss 6 c++ operator-overloading
我正在阅读C++ Primer,在重载操作章节中,作者给出了一个例子:
// member binary operator: left-hand operand bound to implicit this pointer
Sales_item& Sales_item::operator+=(const Sales_item&);
// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);
Run Code Online (Sandbox Code Playgroud)
然后,作者解释说:
当应用于算术类型时,此差异与这些运算符的返回类型匹配:加法产生右值,复合赋值返回对左侧操作数的引用.
我不太确定" compound assignment returns a reference to the left-hand operand".有人可以详细说明,有关的事情吗?
这意味着您可以执行以下操作
a = 1;
(a += 1) += 1;
Run Code Online (Sandbox Code Playgroud)
结果将是a == 3.这是因为最左边的调用+ =修改a然后返回对它的引用.然后下一个+ =对引用进行操作a并再次向其添加一个数字.
另一方面,normal +运算符返回结果的副本,而不是对其中一个参数的引用.所以这意味着表达a + a = 3;是非法的.
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |