0% found this document useful (0 votes)
41 views

Operator Overloading

The document discusses operator overloading in C++. It defines operator overloading as a type of function overloading that gives special meaning to operators relative to a user-defined class. It provides examples of overloading binary operators like + and - for a coord class and overloading the unary operators ++ and -.

Uploaded by

niloypandit.1408
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Operator Overloading

The document discusses operator overloading in C++. It defines operator overloading as a type of function overloading that gives special meaning to operators relative to a user-defined class. It provides examples of overloading binary operators like + and - for a coord class and overloading the unary operators ++ and -.

Uploaded by

niloypandit.1408
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 12

CSE 109: C PROGRAMMING

Credit: Dr. Tanzima Hashem


Professor
CSE, BUET
OPERATOR OVERLOADING
🞆Operator overloading is a type of function overloading
🞆An operator is always overloaded relative to a class (an user defined data type)
🞆An overloaded operator gets a special meaning relative to its class However, the
operator does not loose its original meaning relative to other data types
🞆To overload an operator an operator function is defined for the class
🞆The operator function can be a member or a friend function of the class

2
OPERATOR OVERLOADING RESTRICTIONS
🞆You cannot overload
⚫ :: (scope resolution)
⚫ . (member selection)
⚫ .* (member selection through pointer to function)
⚫ ? (ternary conditional) operators
🞆Overloading cannot change the original precedence of the operator
🞆The number of operands on which the operator would be applicable cannot be
changed too
🞆Operator functions cannot have default arguments

3
OPERATOR OVERLOADING GENERAL FORM
🞆Prototype definition
class class-name{
……..
return-type operator # (arg-list);
};
🞆Function definition
return-type class-name :: operator # (arg-list){
//operation to be performed
}
4
OVERLOADING BINARY OPERATORS
class coord {
int x, y;
public:
coord(int a = 0, int b = 0) {
x = a; y = b;
}
void show() {
cout << x << “, ” << y << endl;
}
coord operator+(coord obj);
coord operator+(int i);
coord operator-(coord obj);
5
coord operator=(coord obj);
};
OVERLOADING BINARY OPERATORS
coord coord::operator+(coord obj) {
coord temp;
temp.x = x + obj.x;
temp.y = y + obj.y;
return temp;
}
coord coord::operator+(int i) {
coord temp;
temp.x = x + i;
temp.y = y + i;
return temp; 6

}
OVERLOADING BINARY OPERATORS
coord coord::operator-(coord obj) {
coord temp;
temp.x = x - obj.x;
temp.y = y - obj.y;
return temp;
}
coord coord::operator=(coord obj) {
x = obj.x;
y = obj.y;
return *this;
} 7
OVERLOADING BINARY OPERATORS
void main() { coord c6 = c1 + c2 + c3;
coord c1(20, 20), c2(10, 10); // (c1.+(c2)).+(c3)
coord c3 = c1 + c2; // c1.+(c2) c6.show(); // 60, 60
c3.show(); // 30, 30 (c6 – c4).show(); // 25, 25

coord c4 = c3 + 5; // c3.+(5) c5 = c6 = c6 – c1;


c4.show(); // 35, 35 // c5.=(c6.=(c6.-(c1)))
c5.show(); // 40, 40
coord c5 = c2 – c1; // c2.-(c1) c6.show(); // 40, 40
c5.show(); // -10, -10 }
8
OVERLOADING A UNARY OPERATOR
class coord {
int x, y;
public:
coord(int a = 0, int b = 0) {
x = a; y = b;
}
void show() {
cout << x << “, ” << y << endl;
}
coord operator++();
coord operator-();
coord operator-(coord obj); 9

};
OVERLOADING A UNARY OPERATOR
coord coord::operator++() {
++x; ++y; return *this;
} // prefix version

coord coord::operator-() {
coord temp;
temp.x = -x; temp.y = -y;
return temp;
}

coord coord::operator-(coord obj) {


coord temp;
temp.x = x-obj.x; temp.y = y-obj.y;
10
return temp;
}
OVERLOADING A UNARY OPERATOR
void main() { coord c6 = c3 – c2;
coord c1(10, 10), c2(10, 10);
// c3.-(c2)
coord c3 = ++c1;
// c1.++()
c6.show(); // 0, 0
c1.show(); // 11, 11 }
c2.show(); // 11, 11
c3.show(); // 11, 11

coord c5 = -c1;
🞆Postfix increment
// c1.-() 🞆coord operator++(int unused);
c1.show(); // 11, 11
c5.show(); // -11, -11
11
Acknowledgement
http://faizulbari.buet.ac.bd/Courses.html
http://mhkabir.buet.ac.bd/cse201/index.html

THE END
Topic Covered: Chapter 6

You might also like