Operator Overloading

Article by:
Date Published:
Last Modified:


C++ allows you to perform operator overloading. This is when you specify the exact behaviour of a operator when used on or between specific data types. For example, you may create a string object class String, and overload the addition (+) operator so that when used on two string types like so str1 + str2, it concatenates the strings together to produce a new string.

Operator overloading allows you to express statements in a more compact and readable form. Continuing with the above example, if operator overloading was not available, we would have to create a function called String::Append(String & string2) and to perform the same action as above we would have to write str1.Append(str), which is slightly more convoluted.

What Operators Can I Overload?

C++ allows you to overload most operators. In fact, because you can overload so many, it’s easier just to list the ones you can’t.

Operators you CAN’T overload:

  • . (member selection operator, note you can still override ->)
  • .* (member selection with pointer to member operator)
  • ?: (tenary conditional operator)
  • sizeof() (object size operator)
  • typeid() (object type info operator)
  • :: (scope resolution operator)

Suitability For Embedded Systems

In my opinion, operator overloading is a perfectly O.K. technique to use on low-power microcontrollers. As long as you overload operators so that they make intuitive sense, and you are aware of the actual function calls taking place, I don’t see any reason why you should not embrace this powerful feature in an embedded context.

My String-Cpp library (which is designed for use on low-power microcontrollers) makes use of operator overloading so that you can add and compare strings with one another.


Geoffrey Hunter

Dude making stuff.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License .

Related Content


comments powered by Disqus