Suppose I define this structure:
struct Point {
double x, y;
};
How can I overload the +
operator so that, declared,
Just do it:
Point operator+( Point const& lhs, Point const& rhs );
Point operator+( Point const& lhs, double rhs );
Point operator+( double lhs, Point const& rhs );
With regards to your last question, the compiler makes no
assumptions concerning what your operator does. (Remember, the
+
operator on std::string
is not commutative.) So you
have to provide both overloads.
Alternatively, you can provide an implicit conversion of
double
to Point
(by having a converting constructor in
Point
). In that case, the first overload above will handle
all three cases.