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 рдмрдирддрд╛ рд╣реИред
тЖУ
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 рдХрд░рдирд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ + 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 рд╣реИрдВред
Binary Operator Overloading
рдЬрдм рдХрд┐рд╕реА рдРрд╕реЗ Operator рдХреЛ Overload рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рджреЛ Operands рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рддрдм рдЙрд╕реЗ Binary Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП +, -, *, /, == рдЖрджрд┐ Binary Operators рд╣реИрдВред
Operator Overloading using Member Function
Member Function рджреНрд╡рд╛рд░рд╛ Operator Overloading рдХрд░рдиреЗ рдкрд░ Operator Function рд╕рдВрдмрдВрдзрд┐рдд Class рдХрд╛ Member рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди Object рд╕реНрд╡рддрдГ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ рддрдерд╛ рджреВрд╕рд░рд╛ Object Argument рдХреЗ рд░реВрдк рдореЗрдВ Pass рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
| 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 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред
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
Unary Operator Overloading Program
Operator Overloading using Friend Function
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
- What is Operator Overloading?
- Why is Operator Overloading used?
- Explain Unary Operator Overloading.
- Explain Binary Operator Overloading.
- Can all Operators be Overloaded?
- What is the role of the operator Keyword?
- Differentiate between Member Function and Friend Function based Operator Overloading.
- Name any five Operators that cannot be overloaded.
- Differentiate between Function Overloading and Operator Overloading.
- State the advantages of Operator Overloading.
Exam Oriented Important Questions
- Define Operator Overloading with suitable example.
- Explain the need and features of Operator Overloading.
- Write a C++ Program to overload the + Operator.
- Explain Unary and Binary Operator Overloading.
- Discuss Operator Overloading using Member Function and Friend Function.
- Which Operators cannot be overloaded? Explain.
- Write the rules of Operator Overloading.
- Discuss the advantages and limitations of Operator Overloading.
- Differentiate between Function Overloading and Operator Overloading.
- 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 тЖТ