0% found this document useful (0 votes)
77 views17 pages

Object Oriented Programming

Operator overloading allows changing the definition of an operator so it can be applied to objects of a class. It is done by declaring a function with the operator keyword followed by the operator symbol. Common operators that can be overloaded include arithmetic, comparison, concatenation, increment/decrement, and assignment operators. Overloading allows treating user-defined types like built-in types when applying operators to them.

Uploaded by

image007
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
77 views17 pages

Object Oriented Programming

Operator overloading allows changing the definition of an operator so it can be applied to objects of a class. It is done by declaring a function with the operator keyword followed by the operator symbol. Common operators that can be overloaded include arithmetic, comparison, concatenation, increment/decrement, and assignment operators. Overloading allows treating user-defined types like built-in types when applying operators to them.

Uploaded by

image007
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17

Object Oriented Programming

26th may 2008

What is operator overloading?


Changing the definition of an operator so it can be applied on the objects of a class is called operator overloading. To overload an operator, we need to write a function for the operator we are overloading.

What is operator overloading?


Is done by declaring a function with a name consisting of the keyword operator followed by one of the built-in operators. New operators cannot be defined. Makes no assumptions about similar operators. For example, the fact that you overloaded + does not mean that you have also defined += for your class type. Cannot use default arguments.

Special cases
The assignment operator (=) may be used with every class without explicit overloading. The default behavior of the assignment operator is a member-wise assignment of the data members of the class. The address operator (&) may also be used with objects of any class without explicit overloading.It returns the address of the object in memory.

General Format-Operator Overloading


return_type classname :: operator operator_symbol(argument)

{ .. statements; } class class name { private: . public: void operator operator_symbol(argument); };

Operators in C++
C++ has a rich collection of operators most of which are common to other programming languages It is the standard arithmetic and logical operators
+ - * / % & ! >> << || && == etc

It has the array indexing and function evaluation operators


[] ()

It has the assignment operators


= += -= *= /= &= |= etc

It has the auto increment and decrement operators


++ --

It has the pointer de-referencing and address of operators


* &

It has the memory management operators


new delete new[] delete[]

We can divide up the set of operators into unary and binary operators
A unary operator has one operand Examples
if (!x) {..} x++; --x; // unary operator !, operand x // post-fix operator ++, operand x / / pre-fix operator --, operand x

int y=a[5]; // operator [], operand a

Unary Operator Overloading Example


#include <iostream.h> class Integer { private: int x; public: Integer( ) { x=0; } //Constructor void display(); void operator ++( ); }; void Integer :: display() { cout<<\nValue of x is: << x; } void Integer :: operator ++( ) //Operator Overloading for operator ++ defined { ++x; }

Unary Operator Overloading Example


void main( ) { Integer e1,e2; //Object e1 and e2 created cout<<Before Increment cout <<\nObject e1: <<e1.display(); cout <<\nObject e2: <<e2.display(); ++e1; //Operator overloading applied ++e2; cout<<\n After Increment cout <<\nObject e1: <<e1.display(); cout <<\nObject e2: <<e2.display(); }

Unary Operator Overloading Example


Before Increment Object e1: Value of x is: 0 Object e2: Value of x is: 0 Before Increment Object e1: Value of x is: 1 Object e2: Value of x is: 1

A binary operator has two operands


Examples
int z=x+y; bool z=x&&y; x+=y; // binary operator +, operands x and y // binary operator && operands x and y // binary operator +=, operands x and y

Binary Operator Overloading Example


Class add{
Private:

int x;
Public: add(int y) {x = y;}
void display() {cout<<x<<endl;} add operator +(add a) { add temp;

temp.x = x+a.x; return temp;}


}; Void main() { add a1(10),a2(20),a3(0); a3 = a1+a2; a3.display(); }

Class dist{ private:

Arithmetic Assignment Operator


int feet; float inches;

public: dist(int a,float b) { feet = a; inches = b; } void display() {cout<<feet<< <<inches<<endl;} void operator +=(dist d) { feet += d.feet; inches += d.inches; if(inches>12.0) { inches -=12.0; feet++; }};

Void main() { dist d1(6,3),d2(10,5.0); d1+=d2; d1.display(); }

Comparison Operator-Example
Class str{ private: char s[10]; public: str(char s1[]) { strcpy(s,s1);} void display() {cout<<s;} bool operator ==(string ss) const { return (strcmp(s,ss.s)==0)? True:false;} }; Void main() { str t = yes; str t1 = no; if(t == t1) t.display(); Else t1.display(); }

Class cat{ Private:

Concatenating Strings

string str;

public: string operator+(string s) { strcat(str,s) return str;}}; Void main() { string s1 = hello; String s2 = world; String s3 = s1+s2; Cout<<s3; }

Restrictions on operator overloading The precedence of an operator cannot be changed The arity of an operator cannot be changed We cannot redefine a binary operator to be unary or vice verse The associativity of an operator cannot change Whether it applies left to right or right to left

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy