210 likes | 333 Views
Operator Overloading . Examples. Class Point. Int main() { Point p1,p2; p1.getdata(); p2.getdata(); p1.putdata(); p2.putdata(); }. Class Point { int x,y,z ; Public: Void getdata () { cin >> x >> y >> z;} Void putdata ()
E N D
Operator Overloading Examples Prepared By -- Prajakta Mulye
Class Point Int main() { Point p1,p2; p1.getdata(); p2.getdata(); p1.putdata(); p2.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} }; Prepared By -- PrajaktaMulye
Class Point Int main() { Point p1,p2,p3; p1.getdata(); p2.getdata(); p3 = p1 + p2; // Error p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} }; Prepared By -- PrajaktaMulye
Class Point Point Point::operator +(Point &obj) { Point temp; temp.x = x + obj.x; temp.y = y + obj.y; temp.z = z + obj .z; return temp; } int main() { Point p1,p2,p3; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke operator +(point) p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator+(Point&obj); }; Prepared By -- PrajaktaMulye
Class Point Point operator +(Point &c1,Point &c2) { Point temp; temp.x = c1.x + c2.x; temp.y = c1.y + c2.y; temp.z = c1.z + c2 .z; return temp; } int main() { Point p1,p2,p3; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke friend fn + p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} friend Point operator +(Point &,Point &); }; Prepared By -- PrajaktaMulye
Class Point Point Point::operator *(Point &obj) { Point temp; temp.x = x * obj.x; temp.y = y * obj.y; temp.z = z * obj .z; return temp; } int main() { Point p1,p2,p3; p1.getdata(); p2.getdata(); p3 = p1 * p2; //will invoke operator * p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator *(Point&obj); }; Prepared By -- PrajaktaMulye
Class Point Point Point::operator +(Point &obj) { Point temp; temp.x = x + obj.x; temp.y = y + obj.y; temp.z = z + obj .z; return temp; } int main() { Point p1,p2,p3; int a = 20; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke operator + p3 = p1 + 10; // Error p3 = p1 + a; // Error p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator+(Point&obj); }; Prepared By -- Prajakta Mulye
Class Point Point Point::operator + (int n) { Point temp; temp.x = x + n; temp.y = y + n; temp.z = z + n; return temp; } int main() { Point p1,p2,p3; int a = 20; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke operator +(point) p3 = p1 + 10; //will invoke operator +(int) p3 = p1 + a; //will invoke operator +(int) p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator+(Point&obj); Point operator +(int ); }; Point Point::operator +(Point &obj) { Point temp; temp.x = x + obj.x; temp.y = y + obj.y; temp.z = z + obj .z; return temp; } Prepared By -- PrajaktaMulye
Class Point Point Point::operator + (int n) { Point temp; temp.x = x + n; temp.y = y + n; temp.z = z + n; return temp; } int main() { Point p1,p2,p3; int a = 20; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke operator +(point) p3 = p1 + 10; // will invoke operator +(int) p3 = 10+ p1; //Error p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator+(Point&obj); Point operator +(int ); }; Point Point::operator +(Point &obj) { Point temp; temp.x = x + obj.x; temp.y = y + obj.y; temp.z = z + obj .z; return temp; } Prepared By -- PrajaktaMulye
Point operator + (intn,Point &obj) { Point temp; temp.x = obj.x+ n; temp.y = obj.y+ n; temp.z = obj.z+ n; return temp; } int main() { Point p1,p2,p3; int a = 20; p1.getdata(); p2.getdata(); p3 = p1 + p2; //will invoke operator +(point) p3 = p1 + 10; // will invoke operator +(int) p3 = 10 + p1; //will invoke friend fn p3.putdata(); } Class Point { intx,y,z; Public: Void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} Point operator+(Point&obj); Point operator +(int ); friend Point operator+(int , Point &obj); }; Point Point::operator +(Point &obj) { Point temp; temp.x = x + obj.x; temp.y = y + obj.y; temp.z = z + obj .z; return temp; } Point Point::operator + (int n) { Point temp; temp.x = x + n; temp.y = y + n; temp.z = z + n; return temp; } Prepared By -- Prajakta Mulye
void point::operator – () { x = -x; y = -y; z = -z ; } int main() { Point p1; p1.getdata() -p1; //will invoke operator –() p3.putdata(); } /* Ovreloading unary –() */ Class Point { intx,y,z; Public: void getdata() { cin >> x >> y >> z;} Void putdata() {cout << x << y << z;} void operator –(); }; Prepared By -- PrajaktaMulye
StringClass (Overloading of operator + ) Main() { String s1(“abc”),s2(“xyz”),s3; s3 = s1+s2; // will invoke operator +(string) } Class String { char str[100]; public: String() {str = ‘\0’;} String(char s[]) {strcpy(str,s);} String(const String &s) { strcpy(str,s.str);} String operator +(String &obj); }; String String::operator +(String &obj) { String temp; strcpy(temp.str,str); strcat(temp.str,obj.str); } Prepared By -- Prajakta Mulye
StringClass(Overloading of operator ==) Main() { String s1(“abc”),s2(“xyz”),s3; If(s1==s2) // will invoke operator ==(string) { cout<<“\n Strings are same”; } else { cout<<“\nStrings are not same”; } } Class String { char str[100]; public: String() {str = ‘\0’;} String(char s[]) {strcpy(str,s);} String(const String &s) { strcpy(str,s.str);} intoperator ==(String &obj); }; int String::operator ==(String &obj) { if(strcmp(str,obj.str)) return 1; else return 0; } Prepared By -- Prajakta Mulye
StringClass(Overloading of unary operator ! ) main() { String s1(“abc”),s2(“xyz”),s3; !s1; //will invoke operator !() s1.display(); return 0; } Class String { char str[100]; public: String() {str = ‘\0’;} String(char s[]) {strcpy(str,s);} String(const String &s) { strcpy(str,s.str);} void operator !(); void display() {cout<<end<<str;} }; void String::operator !() { intlen = strlen(str); for(inti = 0 ;i<len;i++) if(str[i] >=‘A’ && str[i] <=‘Z’) str[i] += 32; if(str[i]>=‘a’ && str[i] <= ‘z’) str[i] -= 32; } Prepared By -- PrajaktaMulye
int String::operator > (String &obj) { int len1 = strlen(str); int len2 = strlen(obj.str); if(len1 > len2) return 1; else return 0; } int String::operator !=(String &obj) { if(strcmp(str,obj.str)) return 0; else return 1; } main() { String s1(“abc”),s2(“xyz”); if(s1 > s2) //will invoke operator >(string) cout<<“1st string is greater”; else cout<<“2nd string is greater”; If(s1 != s2) //will invoke operator !=(string ) cout<<“String not same”; else cout<<“Strings are same”; return 0; } StringClass(Overloading of operators > and != ) Class String { char *str; intlen; public: String() {len =0 ;str = new char[len+1]; str=“‘\0”;} String(char *s) {len= strlen(s); str= new char[len+1]; strcpy(str,s);} String(const String &obj) { len = strlen(obj.str) ; str= new char[len+1]; strcpy(str,obj.str);} intoperator>(String &obj); intoperator !=(String &obj); void display() {cout<<end<<str;} }; Prepared By -- PrajaktaMulye
main() { clrscr(); number n1(10,20),n2; cout<<"\n Values after preincrement"; n2 = ++n1; //will invoke operator++() cout<<"\n Values for n1: "; n1.putdata(); cout<<"\n Values for n2: "; n2.putdata(); cout<<endl<<endl; cout<<"\n Values after postincrement"; n2 = n1++; //will invoke operator++(int) cout<<"\n Values for n1: "; n1.putdata(); cout<<"\n Values for n2: "; n2.putdata(); return 0; } Class number Overloading of unary operator ++ class number { inta,b; public: number() {a=0;b=0;} number(intx,int y) {a=x;b=y;} numberoperator++() { a++; b++; return *this; } number operator++(int x) { number temp; temp = *this; a++; b++; return temp; } void putdata() { cout<<endl<<a<<" "<<b;} }; Prepared By -- PrajaktaMulye
main() { clrscr(); number n1(10,20),n2(2,3); cout<<"\n Values of n1 :"; n1.putdata(); cout<<"\n Values of n2 :"; n2.putdata(); n1 += n2; //will invoke operator +=(number) cout<<"\n Values of n1: "; n1.putdata(); cout<<"\n Values of n2 :"; n2.putdata(); } Overloading of unary operator += class number { inta,b; public: number() {a=0;b=0;} number(intx,int y) {a=x;b=y;} number operator+=(number &obj) { a=a+obj.a; b=b+obj.b; return *this; } void putdata() { cout<<endl<<a<<" "<<b;} }; Prepared By -- Prajakta Mulye
Overload >> and << main() { clrscr(); time t1; cin>>t1; // will invoke operator >> cout<<t1; / will invoke operator << return 0; } class time { inthh,mm,ss; public: friend istream & operator >>(istream &,time &); friend ostream & operator <<(ostream &,time &); }; istream & operator >>(istream &din,time &obj) { din>>obj.hh>>obj.mm>>obj.ss; return(din); } ostream & operator <<(ostream &dout,time &obj) { dout<<obj.hh<<" : "<<obj.mm<<" : "<<obj.ss; return(dout); } Prepared By -- PrajaktaMulye
Overload >> and << main() { clrscr(); vector obj; cin>>obj; // will invoke operator >> cout<<obj; // will invoke operator << return 0; } #idefine size 5 class vector { int a[size]; public: friend istream & operator >>(istream &,vector&); friend ostream & operator <<(ostream &,vector&); }; istream & operator >>(istream &din,vector &obj) { for(inti=0;i<size;i++) din>>obj.a[i]; return(din); } ostream & operator <<(ostream &dout,vector&obj) { for(inti=0;i<size;i++) dout<<endl<<obj.a[i]; return dout; } Prepared By -- PrajaktaMulye
Overload >> and << main() { clrscr(); vector obj; cin>>obj; // will invoke operator >> cout<<obj; // will invoke operator << return 0; } #idefine size 5 class vector { int a[size]; public: friend voidoperator >>(istream &,vector&); friend void operator <<(ostream &,vector&); }; void operator >>(istream &din,vector &obj) { for(inti=0;i<size;i++) din>>obj.a[i]; } void operator <<(ostream &dout,vector&obj) { for(inti=0;i<size;i++) dout<<endl<<obj.a[i]; } Prepared By -- PrajaktaMulye
Matrix Class Opeartor binary + & unary - matrix matrix::operator +(matrix &obj) { matrix temp; for(inti=0;i<3;i++) for(int j=0;j<3;j++) temp.a[i][j] = a[i][j] + obj.a[i][j]; return temp; } void matrix::operator -() { for(inti=0;i<3;i++) for(int j=0;j<3;j++) a[i][j] = - a[i][j]; } main() { matrix m1,m2,m3; cin>>m1; cin>>m2; m3 = m1+m2;//will invoke operator binary + cout<<m3; -m1; //will invoke operator unary - Cout<<m1; return 0; } class matrix { int a[3][3]; public: friend void operator >>(istream &,matrix &); friend void operator <<(ostream &,matrix &); matrix operator +(matrix &); void operator -(); }; void operator >>(istream &din,matrix &obj) { for(inti=0;i<3;i++) for(j=0;j<3;j++) din>>a[i][j]; } void operator <<(ostream &dout,matrix &obj) { for(inti=0;i<3;i++) { for(j=0;j<3;j++) dout<<a[i][j]<<" "; cout<<endl; } } Prepared By -- PrajaktaMulye