Operator overloading facilitates the specification of user-defined implementation for operations wherein one or both operands are of user-defined class or structure type . This helps user-defined types to behave much like the fundamental primitive data types.