From f4fa71fc63d1581936a46dddaa8b134e7e7f6818 Mon Sep 17 00:00:00 2001 From: Gourav Kumar Singh <34700831+gouravkmr170@users.noreply.github.com> Date: Sat, 6 Jul 2019 00:49:00 +0530 Subject: [PATCH] Update index.md (#33347) * Update index.md * fix: formatted code --- guide/english/cplusplus/overloading/index.md | 60 ++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/guide/english/cplusplus/overloading/index.md b/guide/english/cplusplus/overloading/index.md index e58a69c134..0483235186 100644 --- a/guide/english/cplusplus/overloading/index.md +++ b/guide/english/cplusplus/overloading/index.md @@ -101,3 +101,63 @@ Output for the above program ``` 4 + i3 ``` +## Unary Operators Overloading in C++ + +The unary operators operate on a single operand and following are the examples of Unary operators − + + The increment (++) and decrement (--) operators. + The unary minus (-) operator. + The logical not (!) operator. + +The unary operators operate on the object for which they were called and normally, this operator appears on the left side of the object, as in !obj, -obj, and ++obj but sometime they can be used as postfix as well like obj++ or obj--. + +Following example explain how minus (-) operator can be overloaded for prefix as well as postfix usage. +Example: + +```cpp +#include + +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; +} +``` + +Output: + +```shell +F: -11 I:-10 +F: 5 I:-11 +```