| Lesson 3 || Types of operators that can be overloaded |
| Objective ||Identify the operators that can be overloaded. |
Types of Overloadable Operators in C++
Almost all operators can be overloaded, including:
- All the arithmetic, logical, comparison, equality, assignment, and bit operators. In addition, the autoincrement and autodecrement operators (
--) can have distinct prefix and postfix meanings.
- The subscript or index operator
 and the function call
- The class pointer operator (
->) and the
member pointer selector operator (
- The operators
The assignment, function call, subscripting, and class pointer operators can be overloaded only by nonstatic member functions.
The following operators cannot be overloaded:
- the member operator (
- the member object selector operator (
- the ternary conditional expression operator (
- the scope resolution operator (
Member Function Overloading
Let us assume we have decided to standardize and purchase our laptop computers from only one manufacturer. We could then introduce a new constructor with one less parameter for class Lap_Top.
Lap_Top(const std::string& proc, int ram, int disk,
double screen, double wei) :
Computer(DEFAULT_LT_MAN, proc, ram, disk), screen_size(screen),
We now have two constructors with different signatures in class Lap_Top. Having multiple member functions with the same name but different signatures in a class is called member function overloading.
Calling Base-Class Functions
Meaning: Using the prefix base-class:: in a call to function function-name calls the function with that name defined in the base class of the current class. Now we have two ways to create new Lap_Top objects. Both of the following statements are valid:
Lap_Top ltp1("Intel P4 2.8", 256, 40, 14, 6.5);
Lap_Top ltp2("MicroSys", "AMD Athlon 2000", 256, 40, 15, 7.5);
Because the manufacturer string is not specified for ltp1, its manufacturer is DEFAULT_LT_MAN.
Operator Overloading - Quiz