Operator Overloading

21
Operator Overloading Examples Prepared By -- Prajakta Mulye

description

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 () - PowerPoint PPT Presentation

Transcript of Operator Overloading

Page 1: Operator Overloading

Prepared By -- Prajakta Mulye

Operator OverloadingExamples

Page 2: Operator Overloading

Class PointClass Point {int x,y,z;Public:Void getdata(){ cin >> x >> y

>> z;}Void putdata(){cout << x << y

<< z;}};

Int main(){ Point p1,p2;

p1.getdata(); p2.getdata();

p1.putdata(); p2.putdata();

}

Prepared By -- Prajakta Mulye

Page 3: Operator Overloading

Class PointClass Point {int x,y,z;Public:Void getdata(){ cin >> x >> y

>> z;}Void putdata(){cout << x << y

<< z;}};

Int main(){ Point p1,p2,p3;

p1.getdata(); p2.getdata();

p3 = p1 + p2; // Error

p3.putdata();

}

Prepared By -- Prajakta Mulye

Page 4: Operator Overloading

Class PointClass Point {int x,y,z;Public:Void getdata(){ cin >> x >> y >> z;}Void putdata(){cout << x << y << z;}

Point operator+(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;}int main(){ Point p1,p2,p3;

p1.getdata(); p2.getdata();

p3 = p1 + p2; //will invoke operator +(point)

p3.putdata();

}

Prepared By -- Prajakta Mulye

Page 5: Operator Overloading

Class PointClass Point {int x,y,z;Public:Void getdata(){ cin >> x >> y >> z;}Void putdata(){cout << x << y << z;}

friend Point operator +(Point &,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();

}

Prepared By -- Prajakta Mulye

Page 6: Operator Overloading

Class PointClass Point {int x,y,z;Public:Void getdata(){ cin >> x >> y >> z;}Void putdata(){cout << x << y << z;}

Point operator *(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;}int main(){ Point p1,p2,p3;

p1.getdata(); p2.getdata();

p3 = p1 * p2; //will invoke operator *

p3.putdata();

}

Prepared By -- Prajakta Mulye

Page 7: Operator Overloading

Class Point

Class Point {int x,y,z;Public:Void getdata(){ cin >> x >> y >> z;}Void putdata(){cout << x << y << z;}Point operator+

(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;}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();

}

Prepared By -- Prajakta Mulye

Page 8: Operator Overloading

Class Point

Class Point {int x,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;}

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();}

Prepared By -- Prajakta Mulye

Page 9: Operator Overloading

Class Point

Class Point {int x,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;}

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();}

Prepared By -- Prajakta Mulye

Page 10: Operator Overloading

Class Point {int x,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;}

Point operator + (int n,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();

}Prepared By -- Prajakta Mulye

Page 11: Operator Overloading

/* Ovreloading unary –() */

Class Point {int x,y,z;Public:void getdata(){ cin >> x >> y >> z;}Void putdata(){cout << x << y << z;}

void operator –();

};

void point::operator – ( ){ x = -x; y = -y; z = -z ;}

int main(){ Point p1; p1.getdata() -p1; //will invoke operator –() p3.putdata();

}

Prepared By -- Prajakta Mulye

Page 12: Operator Overloading

String Class (Overloading of operator + )

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);}

Main(){String s1(“abc”),s2(“xyz”),s3; s3 = s1+s2; // will invoke operator +(string)}

Prepared By -- Prajakta Mulye

Page 13: Operator Overloading

String Class(Overloading of operator ==)

Class String{ char str[100];public: String() {str = ‘\0’;} String(char s[]) {strcpy(str,s);} String(const String &s)

{ strcpy(str,s.str);}

int operator ==(String &obj);};

int String::operator ==(String &obj){ if(strcmp(str,obj.str)) return 1; else return 0;}

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”;}

}

Prepared By -- Prajakta Mulye

Page 14: Operator Overloading

String Class(Overloading of unary operator ! )

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 !(){ int len = strlen(str); for(int i = 0 ;i<len;i++) if(str[i] >=‘A’ && str[i] <=‘Z’) str[i] += 32;

if(str[i]>=‘a’ && str[i] <= ‘z’) str[i] -= 32;}

main(){ String s1(“abc”),s2(“xyz”),s3; !s1; //will invoke operator !()

s1.display();

return 0;}

Prepared By -- Prajakta Mulye

Page 15: Operator Overloading

String Class(Overloading of operators > and != )

Class String{ char *str; int len;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);}

int operator >(String &obj); int operator !=(String &obj); void display() {cout<<end<<str;}};

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;}

Prepared By -- Prajakta Mulye

Page 16: Operator Overloading

Class number Overloading of unary operator ++class number{ int a,b; public: number() {a=0;b=0;} number(int x,int y) {a=x;b=y;} number operator++() { a++; b++; return *this; }  number operator++(int x) { number temp; temp = *this; a++; b++; return temp;  } void putdata() { cout<<endl<<a<<"

"<<b;}}; 

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;}

Prepared By -- Prajakta Mulye

Page 17: Operator Overloading

Overloading of unary operator +=

class number{ int a,b; public: number() {a=0;b=0;} number(int x,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;}};

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();}

Prepared By -- Prajakta Mulye

Page 18: Operator Overloading

Overload >> and << class time{ int hh,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);}

main(){ clrscr();

time t1;

cin>>t1; // will invoke operator >>

cout<<t1; / will invoke operator <<

return 0;}

Prepared By -- Prajakta Mulye

Page 19: Operator Overloading

Overload >> and << #idefine size 5class vector{ int a[size]; public: friend istream & operator >>(istream

&,vector&); friend ostream & operator <<(ostream

&,vector&);}; istream & operator >>(istream &din,vector

&obj){ for(int i=0;i<size;i++) din>>obj.a[i]; return(din);}ostream & operator <<(ostream

&dout,vector&obj){ for(int i=0;i<size;i++) dout<<endl<<obj.a[i]; return dout;}

main(){ clrscr();

vector obj;

cin>>obj; // will invoke operator >>

cout<<obj; // will invoke operator <<

return 0;}

Prepared By -- Prajakta Mulye

Page 20: Operator Overloading

Overload >> and << #idefine size 5class vector{ int a[size]; public: friend void operator >>(istream &,vector&); friend void operator <<(ostream &,vector&);}; void operator >>(istream &din,vector &obj){ for(int i=0;i<size;i++) din>>obj.a[i]; }

void operator <<(ostream &dout,vector&obj){ for(int i=0;i<size;i++) dout<<endl<<obj.a[i];}

main(){ clrscr();

vector obj;

cin>>obj; // will invoke operator >>

cout<<obj; // will invoke operator <<

return 0;}

Prepared By -- Prajakta Mulye

Page 21: Operator Overloading

Matrix Class Opeartor binary + & unary -

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(int i=0;i<3;i++)

for(j=0;j<3;j++) din>>a[i][j];

}  void operator <<(ostream &dout,matrix &obj){ for(int i=0;i<3;i++) {

for(j=0;j<3;j++) dout<<a[i][j]<<" ";cout<<endl;

}}

matrix matrix::operator +(matrix &obj){ matrix temp; for(int i=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(int i=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;}

Prepared By -- Prajakta Mulye