C ++ allows the programmer to create new definitions for these operators so that they can operate specifically on these user-defined data types . Which set of operators is actually called and implemented is decided during the compilation , and it is based on the data types of the operands involved in the operation . The ability to define a new set of data-type , dependent operations on existing operators , or functions , is called operator overloading .