| Lesson 8 | Overloading unary operators |
| Objective | Add postfix decrement/increment operator to clock class. |
Overloading Unary Operators in C++
Examine overloading a unary operator.
For this purpose, we develop the
class clock, which is used to store time as days, hours, minutes, and seconds.
This class overloads the prefix autoincrement operator. This overloaded operator is a member function and can be invoked on its implicit single argument. The member function
tick() adds one second to the implicit argument of the overloaded
++ operator.
class clock {
public:
clock(unsigned long i); //conversion
void print() const; //format printout
void tick(); //add one second
clock operator++()
{
this -> tick();
return(*this);
}
private:
unsigned long tot_secs, secs, mins, hours, days;
};
The clock constructor
Now let us look at the constructor for clock.
The constructor performs the usual conversions from tot_secs to days, hours, minutes, and seconds. For example, there are 86,400 seconds in a day, therefore; integer division by this constant gives the whole number of days.
inline clock::clock(unsigned long i){
tot_secs = i;
secs = tot_secs % 60;
mins = (tot_secs / 60) % 60;
hours = (tot_secs / 3600) % 24;
days = tot_secs / 86400;
}
tick() function
The member function tick() constructs clock temp, which adds one second to the total time.
The constructor acts as a conversion function that properly updates the time. In addition, tick() uses the overloaded prefix autoincrement operator
void clock::tick(){
clock temp = clock(++tot_secs);
secs = temp.secs;
mins = temp.mins;
hours = temp.hours;
days = temp.days;
}
Overloaded Unary Operators - Exercise

