Operator Overloading

suggest change


In C++, it is possible to define operators such as \+ and -> for user-defined types. For example, the <string> header defines a \+ operator to concatenate strings. This is done by defining an operator function using the operator keyword.


The operators for built-in types cannot be changed, operators can only be overloaded for user-defined types. That is, at least one of the operands has to be of a user-defined type.

The following operators cannot be overloaded:

There are some operators that you should not (99.98% of the time) overload:

Why? Because they overload operators that another programmer might never expect, resulting in different behavior than anticipated.

For example, the user defined && and || overloads of these operators lose their short-circuit evaluation and lose their special sequencing properties (C++17), the sequencing issue also applies to , operator overloads.

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents