我对 c++ 相当陌生,并且正在尝试了解自定义运算符。我目前遇到的问题与定义我自己的 += 运算符以及解决它的最佳方法有关。这涉及一个简单的类,该类具有可以添加的公共 int 成员 (intValue)。据我所知,以下两个代码示例(我一次尝试过一个)在我的程序中的操作完全相同。“完全相同”是指我得到相同的结果并创建相同数量的对象。
哪一个更正确(标准做法),为什么?
Utility& operator +=(Utility& left, Utility right)
{
return left = left + right;
}
或者
void operator +=(Utility& left, Utility right)
{
left = left + right;
}
而且,如果重要的话,他们打电话给接线员:
Utility operator +(Utility left, Utility right)
{
return Utility(left.intValue + right.intValue);
}
每当调用其构造函数时,该类都会打印出一条消息,因此我可以判断是否正在创建一个新对象。基于这两种形式的 += 我在这里尝试导致创建相同数量的对象。