我假设 operator+ 的规范形式,假设存在重载的 operator+= 成员函数,是这样的:
const T operator+(const T& lhs, const T& rhs)
{
return T(lhs) +=rhs;
}
但有人向我指出,这也行得通:
const T operator+ (T lhs, const T& rhs)
{
return lhs+=rhs;
}
本质上,这种形式将临时的创建从实现主体转移到函数调用。
两个参数有不同的类型似乎有点别扭,但是第二种形式有什么问题吗?有理由偏爱其中一个吗?