Write a program to overload a unary minus operator.
#include<iostream> using namespace std; class A { private: int x,y; public: A(); A(int,int); void print(); //A operator -(); friend A& operator -(A&); }; A :: A() { cout << "default constructor" << endl; } A :: A(int a,int b):x(a),y(b) { cout << "parameterized constructor" << endl; } #if 0 //using member function A A :: operator -() { A temp; temp.x = -x; temp.y = -y; return temp; } #else //using friend function A& operator -(A& ob) { static A temp; temp.x = -ob.x; temp.y = -ob.y; return temp; } #endif void A :: print() { cout << "x = " << x << " y = " << y << endl; } int main() { A obj1(10,20),obj2(-34,56),obj3(45,-43),obj4(-24,-86); obj1.print(); obj2.print(); obj3.print(); obj4.print(); obj1 = -obj1;//obj1 = obj1.operator-() obj2 = -obj2; obj3 = -obj3; obj4 = -obj4; obj1.print(); obj2.print(); obj3.print(); obj4.print(); return 0; }
Output
parameterized constructor parameterized constructor parameterized constructor parameterized constructor x = 10 y = 20 x = -34 y = 56 x = 45 y = -43 x = -24 y = -86 default constructor x = -10 y = -20 x = 34 y = -56 x = -45 y = 43 x = 24 y = 86