What does operator overloading allow you to do?
define how enums and other primitive value types work within the rest of the application
add methods to be interpreted by the compiler at runtime
hide built-in operators when necessary
define custom functionality for common operators like addition and equality Official documentation: Operator overloading