Operator Overloading in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Operator Overloading in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Operator Overloading in C++

Operator Overloading C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Object Oriented Programming Feature рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж Operators рдЬреИрд╕реЗ +, -, *, /, ==, <<, >> рдЖрджрд┐ рдХреЛ User Defined Objects рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ (Behavior) рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Operators рдХрд╛ рдЙрдкрдпреЛрдЧ Objects рдХреЗ рд╕рд╛рде рднреА рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ Primitive Data Types рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Operator Overloading рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА Operator рдХрд╛ рдЕрд░реНрде рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЙрд╕реЗ User Defined Data Types рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рддрд░реАрдХреЗ рд╕реЗ Implement рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ Program рдЕрдзрд┐рдХ Readable, Reusable рддрдерд╛ Object Oriented рдмрдирддрд╛ рд╣реИред

Operator

тЖУ

Custom Behavior

тЖУ

User Defined Objects

Introduction to Operator Overloading

рд╕рд╛рдорд╛рдиреНрдпрддрдГ Arithmetic Operators рдХреЗрд╡рд▓ Built-in Data Types рдЬреИрд╕реЗ int, float рддрдерд╛ double рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрджрд┐ рдХрд┐рд╕реА Program рдореЗрдВ Complex Numbers, Matrix, Date, Time рдЕрдерд╡рд╛ Student рдЬреИрд╕реЗ User Defined Objects рдкрд░ рд╕рдорд╛рди Operators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ C++ Operator Overloading рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

Operator Overloading рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Existing Operators рдХреЛ Objects рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирдпрд╛ Implementation рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ Program рдЕрдзрд┐рдХ Natural рдПрд╡рдВ Understandable рдмрди рдЬрд╛рддрд╛ рд╣реИред


Definition of Operator Overloading

рдЬрдм рдХрд┐рд╕реА Existing Operator рдХреЛ User Defined Class Objects рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЗрддреБ Redefine рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Operator рдХрд╛ Symbol рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ Programmer рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


Need of Operator Overloading

  • User Defined Objects рдкрд░ Operators рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Program рдХреЛ рдЕрдзрд┐рдХ Readable рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Object Oriented Programming рдХреЛ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Complex Data Types рдкрд░ Natural Operations рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Code Reusability рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Professional Software Development рдореЗрдВ Cleaner Syntax рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Mathematical рдПрд╡рдВ Scientific Applications рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Operator Based Programming рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

Features of Operator Overloading

  • Supports Compile Time Polymorphism.
  • Works with User Defined Classes.
  • Existing Operators рдХреЛ рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • Operator рдХрд╛ Symbol рдирд╣реАрдВ рдмрджрд▓рддрд╛ред
  • Member Function рдпрд╛ Friend Function рджреНрд╡рд╛рд░рд╛ Implement рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • Program рдХреА Readability рдмрдврд╝рд╛рддрд╛ рд╣реИред
  • Complex Operations рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
  • Reusable рдПрд╡рдВ Maintainable Code рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддрд╛ рд╣реИред

Advantages of Operator Overloading

Advantage Description
Easy Programming Objects рдкрд░ Operators рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Readable Code Program рдЕрдзрд┐рдХ Natural рдПрд╡рдВ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирддрд╛ рд╣реИред
Code Reusability Reusable Classes рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред
Object Oriented Design Objects рдХреЗ рд╕рд╛рде Operations рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдмрдирддреЗ рд╣реИрдВред
Compile Time Polymorphism Compiler Compile Time рдкрд░ рдЙрдЪрд┐рдд Operator Function рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред

Syntax of Operator Overloading

Operator Overloading рдХреЗ рд▓рд┐рдП operator Keyword рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрд╕ Operator рдХрд╛ Symbol рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ Overload рдХрд░рдирд╛ рд╣реИред

class Demo { public: Demo operator +(Demo obj); };

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ + Operator рдХреЛ User Defined Class Demo рдХреЗ рд▓рд┐рдП Overload рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


Rules of Operator Overloading

Operator Overloading рдХрд░рддреЗ рд╕рдордп C++ рдХреЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдпреЗ рдирд┐рдпрдо Program рдХреА Correctness рддрдерд╛ Compiler рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

  • рдХреЗрд╡рд▓ Existing Operators рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдирдпрд╛ Operator Create рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
  • Operator рдХреА Priority (Precedence) рдПрд╡рдВ Associativity рдирд╣реАрдВ рдмрджрд▓реА рдЬрд╛ рд╕рдХрддреАред
  • рдХрдо рд╕реЗ рдХрдо рдПрдХ Operand User Defined Object рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • Operator Overloading Member Function рдЕрдерд╡рд╛ Friend Function рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
  • Built-in Data Types рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред
  • рдХреБрдЫ Operators рдХреЛ Overload рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
  • Operator рдХрд╛ Symbol рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЙрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓рддрд╛ рд╣реИред

Unary Operator Overloading

рдЬрдм рдХрд┐рд╕реА рдРрд╕реЗ Operator рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ Operand рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддрдм рдЙрд╕реЗ Unary Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ++, --, -, ! рдЖрджрд┐ Unary Operators рд╣реИрдВред

class Number { private: int value; public: void operator ++() { value++; } };

Binary Operator Overloading

рдЬрдм рдХрд┐рд╕реА рдРрд╕реЗ Operator рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рджреЛ Operands рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддрдм рдЙрд╕реЗ Binary Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП +, -, *, /, == рдЖрджрд┐ Binary Operators рд╣реИрдВред

class Demo { public: Demo operator +(Demo obj) { Demo temp; return temp; } };

Operator Overloading using Member Function

Member Function рджреНрд╡рд╛рд░рд╛ Operator Overloading рдХрд░рдиреЗ рдкрд░ Operator Function рд╕рдВрдмрдВрдзрд┐рдд Class рдХрд╛ Member рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди Object рд╕реНрд╡рддрдГ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ рддрдерд╛ рджреВрд╕рд░рд╛ Object Argument рдХреЗ рд░реВрдк рдореЗрдВ Pass рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

class Demo { public: Demo operator +(Demo obj); };
Feature Member Function
Current Object Automatically Available
Arguments Remaining Operands Only
Access Private Members Accessible

Operator Overloading using Friend Function

Friend Function рджреНрд╡рд╛рд░рд╛ Operator Overloading рдХрд░рдиреЗ рдкрд░ Function Class рдХрд╛ Member рдирд╣реАрдВ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рдЙрд╕реЗ Class рдХреЗ Private рддрдерд╛ Protected Members рдХреЛ Access рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрддреА рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Binary Operators рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред

class Demo { friend Demo operator +(Demo,Demo); };

Operators that Cannot be Overloaded

C++ рдореЗрдВ рдХреБрдЫ Operators рдРрд╕реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ Overload рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реЛрддреАред рдЗрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ Compiler рджреНрд╡рд╛рд░рд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

Operator Purpose
. Member Access Operator
:: Scope Resolution Operator
?: Conditional Operator
sizeof Size Operator
.* Pointer-to-Member Operator

Complete Program using Operator Overloading

#include<iostream> using namespace std; class Number { private: int value; public: Number() { value=0; } Number(int x) { value=x; } Number operator +(Number obj) { Number temp; temp.value=value+obj.value; return temp; } void display() { cout<<value; } }; int main() { Number n1(20),n2(30),n3; n3=n1+n2; n3.display(); return 0; }

Unary Operator Overloading Program

#include<iostream> using namespace std; class Counter { private: int count; public: Counter() { count=10; } void operator ++() { ++count; } void display() { cout<<count; } }; int main() { Counter obj; ++obj; obj.display(); return 0; }

Operator Overloading using Friend Function

#include<iostream> using namespace std; class Demo { private: int value; public: Demo(int x=0) { value=x; } friend Demo operator +(Demo,Demo); void display() { cout<<value; } }; Demo operator +(Demo a,Demo b) { Demo temp; temp.value=a.value+b.value; return temp; } int main() { Demo a(15),b(25),c; c=a+b; c.display(); return 0; }

Real Life Applications of Operator Overloading

Application Description
Complex Number Library Complex Numbers рдкрд░ +, -, * рдЬреИрд╕реЗ Operations рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Matrix Operations Matrix Addition рдПрд╡рдВ Multiplication рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Graphics Programming Points, Vectors рддрдерд╛ Coordinates рдкрд░ Operations рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Game Development Game Objects рдПрд╡рдВ Mathematical Calculations рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Scientific Software Custom Mathematical Data Types рдХреЗ рд╕рд╛рде Natural Syntax рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Advantages of Operator Overloading

  • Program рдЕрдзрд┐рдХ Readable рдмрдирддрд╛ рд╣реИред
  • Object Oriented Programming рдХреЛ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рддрд╛ рд╣реИред
  • Complex Objects рдкрд░ Natural Syntax рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред
  • Code Reusability рдмрдврд╝рддреА рд╣реИред
  • Compile Time Polymorphism рдХреЛ Support рдХрд░рддрд╛ рд╣реИред
  • Professional Software Development рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИред
  • Maintainability рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИред
  • Mathematical Programming рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред

Limitations of Operator Overloading

  • Program рдЕрдзрд┐рдХ Complex рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдЧрд▓рдд Overloading рд╕реЗ Code рдХреА Readability рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИред
  • рд╕рднреА Operators рдХреЛ Overload рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
  • Built-in Data Types рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ред
  • Improper Design Debugging рдХреЛ рдХрдард┐рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

Difference between Function Overloading and Operator Overloading

Function Overloading Operator Overloading
Functions рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Operators рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Different Parameter Lists рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИрдВред Operator Function Define рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Same Function Name рдкреНрд░рдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред operator Keyword рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
Compile Time Polymorphism. Compile Time Polymorphism.
Function Call Syntax рдЙрдкрдпреЛрдЧ рд╣реЛрддреА рд╣реИред Operator Syntax рдЙрдкрдпреЛрдЧ рд╣реЛрддреА рд╣реИред

Viva Questions

  1. What is Operator Overloading?
  2. Why is Operator Overloading used?
  3. Explain Unary Operator Overloading.
  4. Explain Binary Operator Overloading.
  5. Can all Operators be Overloaded?
  6. What is the role of the operator Keyword?
  7. Differentiate between Member Function and Friend Function based Operator Overloading.
  8. Name any five Operators that cannot be overloaded.
  9. Differentiate between Function Overloading and Operator Overloading.
  10. State the advantages of Operator Overloading.

Exam Oriented Important Questions

  1. Define Operator Overloading with suitable example.
  2. Explain the need and features of Operator Overloading.
  3. Write a C++ Program to overload the + Operator.
  4. Explain Unary and Binary Operator Overloading.
  5. Discuss Operator Overloading using Member Function and Friend Function.
  6. Which Operators cannot be overloaded? Explain.
  7. Write the rules of Operator Overloading.
  8. Discuss the advantages and limitations of Operator Overloading.
  9. Differentiate between Function Overloading and Operator Overloading.
  10. Explain real-life applications of Operator Overloading.

Conclusion

Operator Overloading C++ рдХрд╛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Compile Time Polymorphism Feature рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Existing Operators рдХреЛ User Defined Objects рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Feature Program рдХреЛ рдЕрдзрд┐рдХ Natural, Readable рдПрд╡рдВ Object Oriented рдмрдирд╛рддрд╛ рд╣реИред Unary Operator, Binary Operator, Member Function рддрдерд╛ Friend Function рдЖрдзрд╛рд░рд┐рдд Operator Overloading рдЖрдзреБрдирд┐рдХ C++ Programming рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рд╣реИрдВред RGPV B.Tech рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ Topic Theory, Practical, Viva рддрдерд╛ University Examination рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

Related Articles

Arrays in C++ Notes | One Dimensional & Two Dimensional Arrays with Programs | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More тЖТ

Control Statements in C++ Notes | Decision Making & Looping Statements | Basic Computer Engineering | RGPV BTech First Year

Control...

Read More тЖТ

Expressions in C++ Notes | Types of Expressions, Evaluation & Expression Statements | Basic Computer Engineering | RGPV BTech First Year

Express...

Read More тЖТ

Operators in C++ Notes | Arithmetic, Relational, Logical, Assignment, Bitwise Operators | Basic Computer Engineering | RGPV BTech First Year

Operato...

Read More тЖТ

Program Structure in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Program...

Read More тЖТ