Operator Overloading in C++
An Introduction
|
Prof. David Bernstein
James Madison University
|
|
Computer Science Department
|
bernstdh@jmu.edu
|
Motivation
- The Situation:
- You are writing a digital cookbook that uses
"English" units
- You write a
Weight
class
- An Inconvenient Syntax:
-
Weight *flourForCookies, *flourForCake, *totalFlour;
.
.
.
totalFlour = new Weight(0,0);
totalFlour.increase(flourForCake);
totalFlour.increase(flourForCookies);
Motivation (cont.)
- A Nicer Syntax:
-
Weight *flourForCookies, *flourForCake, *totalFlour;
.
.
.
totalFlour = new Weight(0,0);
totalFlour = flourForCake + flourForCookies;
- Can We Do It?
- Not in Java
- In C++ we can overload the
+
and
=
operators
Operator "Functions" (cont.)
An Example - The Specification
cppexamples/operatoroverloading/functions/Weight.h
Operator "Functions" (cont.)
An Example - The Implementation
cppexamples/operatoroverloading/functions/Weight.cpp
Operator "Functions" (cont.)
An Example - Use
cppexamples/operatoroverloading/functions/Driver.cpp
Operator "Methods" (cont.)
An Example - The Specification
cppexamples/operatoroverloading/methods/Weight.h
Operator "Methods" (cont.)
An Example - The Implementation
cppexamples/operatoroverloading/methods/Weight.cpp
Operator "Methods" (cont.)
An Example - Use
cppexamples/operatoroverloading/methods/Driver.cpp
There's Always More to Learn