Q.
Write a C++ program to overload unary operators that is
increment and decrement.
Answer: Unary Operators work on the operations carried out on just one
operand. A single operand/variable is used with the unary operator to
determine the new value of that variable. Unary operators are used with the
operand in either the prefix or postfix position.
These are some examples of, unary operators:
1. Increment operator (++),
2. Decrement operator (--),
3. Unary minus operator (-),
4. Logical not operator (!),
5. Address of (&), etc.
Operator overloading is a type of polymorphism in which an operator is
overloaded to give user defined meaning to it. It is used to perform operation
on user-defined data type.
Following program is overloading unary operators: increment (++) and
decrement (--).
#include<iostream>
using namespace std;
class IncreDecre
{
int a, b;
public:
void accept()
{
cout<<"\n Enter Two Numbers : \n";
cout<<" ";
cin>>a;
cout<<" ";
cin>>b;
}
void operator--() //Overload Unary Decrement
{
a--;
b--;
}
void operator++() //Overload Unary Increment
{
a++;
b++;
}
void display()
{
cout<<"\n A : "<<a;
cout<<"\n B : "<<b;
}
};
int main()
{
IncreDecre id;
id.accept();
--id;
cout<<"\n After Decrementing : ";
id.display();
++id;
++id;
cout<<"\n\n After Incrementing : ";
id.display();
return 0;
}
Output:
Following example explain how minus (-) operator can be overloaded for
prefix as well as postfix usage.
Live Demo
#include <iostream>
using namespace std;
class Distance {
private:
int feet; // 0 to infinite
int inches; // 0 to 12
public:
// required constructors
Distance() {
feet = 0;
inches = 0;
}
Distance(int f, int i) {
feet = f;
inches = i;
}
// method to display distance
void displayDistance() {
cout << "F: " << feet << " I:" << inches <<endl;
}
// overloaded minus (-) operator
Distance operator- () {
feet = -feet;
inches = -inches;
return Distance(feet, inches);
}
};
int main() {
Distance D1(11, 10), D2(-5, 11);
-D1; // apply negation
D1.displayDistance(); // display D1
-D2; // apply negation
D2.displayDistance(); // display D2
return 0;
}
When the above code is compiled and executed, it produces the following
result −
F: -11 I:-10
F: 5 I:-11
// program to overload the unary operator ++.
1. #include <iostream>
2. using namespace std;
3. class Test
4. {
5. private:
6. int num;
7. public:
8. Test(): num(8){}
9. void operator ++() {
10. num = num+2;
11. }
12. void Print() {
13. cout<<"The Count is: "<<num;
14. }
15. };
16. int main()
17. {
18. Test tt;
19. ++tt; // calling of a function "void operator ++()"
20. tt.Print();
21. return 0;
22. }
Output:
The Count is: 10