Polymorphism in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Polymorphism in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Polymorphism in C++
Polymorphism Object Oriented Programming (OOP) рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИред Polymorphism рд╢рдмреНрдж рджреЛ Greek Words Poly рддрдерд╛ Morph рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирд╛ рд╣реИ, рдЬрд╣рд╛рдБ Poly рдХрд╛ рдЕрд░реНрде Many рддрдерд╛ Morph рдХрд╛ рдЕрд░реНрде Forms рд╣реЛрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН "One Interface, Many Forms"ред
C++ рдореЗрдВ Polymorphism рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдПрдХ рд╣реА Function рдпрд╛ Object рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Program рдЕрдзрд┐рдХ Flexible, Reusable рддрдерд╛ Maintainable рдмрдирддрд╛ рд╣реИред
One Interface тЖТ Many Implementations
Introduction to Polymorphism
Object Oriented Programming рдореЗрдВ рдХрдИ рдмрд╛рд░ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдПрдХ рд╣реА Function рдЕрд▓рдЧ-рдЕрд▓рдЧ Objects рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ Function рдмрдирд╛рдП рдЬрд╛рдПрдБ рддреЛ Program рдмрдбрд╝рд╛ рддрдерд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди Polymorphism рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Polymorphism Program рдХреЛ рдЕрдзрд┐рдХ Dynamic рдмрдирд╛рддрд╛ рд╣реИ рддрдерд╛ Code Reusability рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдмрдбрд╝реЗ Software Projects, Banking Systems, ERP Applications рддрдерд╛ Game Development рдореЗрдВ рдЗрд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Definition of Polymorphism
Polymorphism рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА Interface, Function рдпрд╛ Object рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ (Behavior) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред C++ рдореЗрдВ Polymorphism рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Compile Time рддрдерд╛ Runtime рд╕реНрддрд░ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
Need of Polymorphism
- Code Reusability рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- Program рдХреЛ Flexible рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- Different Objects рдкрд░ рд╕рдорд╛рди Interface рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Complex Software Development рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- Maintenance Cost рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Dynamic Behavior рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Extensible Applications рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- Object Oriented Programming рдХреЛ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Features of Polymorphism
- Supports Multiple Forms of a Function.
- Improves Code Reusability.
- Provides Dynamic Behavior.
- Supports Method Overriding.
- Supports Function Overloading.
- Works with Inheritance.
- Improves Software Scalability.
- Reduces Code Complexity.
Advantages of Polymorphism
| Advantage | Description |
|---|---|
| Code Reusability | рдПрдХ рд╣реА Interface рдХрд╛ рдХрдИ Objects рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред |
| Flexibility | Program рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред |
| Easy Maintenance | Code рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред |
| Scalability | рдирдИ Functionalities рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред |
| Readable Code | Program рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдПрд╡рдВ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирддрд╛ рд╣реИред |
Types of Polymorphism
C++ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Polymorphism рджреЛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИред
| Type | Description |
|---|---|
| Compile Time Polymorphism | Compiler рджреНрд╡рд╛рд░рд╛ Compile рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
| Runtime Polymorphism | Program Execute рд╣реЛрдиреЗ рдХреЗ рд╕рдордп Function рдХрд╛ рдЪрдпрди рд╣реЛрддрд╛ рд╣реИред |
Compile Time Polymorphism
Compile Time Polymorphism рдХреЛ Static Binding рдпрд╛ Early Binding рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ Compiler Compile Time рдкрд░ рд╣реА рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди-рд╕рд╛ Function Execute рд╣реЛрдЧрд╛ред Function Overloading рддрдерд╛ Operator Overloading рдЗрд╕рдХреЗ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
Runtime Polymorphism
Runtime Polymorphism рдХреЛ Dynamic Binding рдЕрдерд╡рд╛ Late Binding рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдгрдп Program рдХреЗ Execute рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди-рд╕рд╛ Function Call рд╣реЛрдЧрд╛ред Runtime Polymorphism рдореБрдЦреНрдп рд░реВрдк рд╕реЗ Function Overriding рддрдерд╛ Virtual Function рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Function Overloading
рдЬрдм рдПрдХ рд╣реА Class рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Functions рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдирдХреЗ Parameters рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ Data Type рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рдЙрд╕реЗ Function Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Compile Time Polymorphism рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
Operator Overloading
C++ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз Operators рдЬреИрд╕реЗ +, -, *, == рдЖрджрд┐ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ User Defined Objects рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
Function Overriding
рдЬрдм Derived Class, Base Class рдХреЗ рдХрд┐рд╕реА Function рдХреЛ рдЙрд╕реА рдирд╛рдо рддрдерд╛ рд╕рдорд╛рди Parameters рдХреЗ рд╕рд╛рде рдкреБрдирдГ Define рдХрд░рддреА рд╣реИ, рддрдм рдЙрд╕реЗ Function Overriding рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Runtime Polymorphism рдХрд╛ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИред
Virtual Function
Virtual Function рдРрд╕рд╛ Member Function рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ Base Class рдореЗрдВ virtual Keyword рдХреЗ рд╕рд╛рде Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Base Class Pointer рджреНрд╡рд╛рд░рд╛ Derived Class рдХрд╛ рд╕рд╣реА Function Runtime рдкрд░ Call рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Pure Virtual Function
рдЬрд┐рд╕ Virtual Function рдХреА рдХреЛрдИ Implementation Base Class рдореЗрдВ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рдФрд░ рдЙрд╕реЗ = 0 рджреНрд╡рд╛рд░рд╛ Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реЗ Pure Virtual Function рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
Abstract Class
рдЬрд┐рд╕ Class рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ Pure Virtual Function рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реЗ Abstract Class рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реА Class рдХрд╛ Object Create рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ Base Class рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
| Concept | Description |
|---|---|
| Virtual Function | Runtime Polymorphism рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред |
| Pure Virtual Function | Implementation рдирд╣реАрдВ рд╣реЛрддреА рддрдерд╛ =0 рд╕реЗ Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
| Abstract Class | Object Create рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред |
Early Binding vs Late Binding
| Early Binding | Late Binding |
|---|---|
| Compile Time рдкрд░ Function Call рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред | Runtime рдкрд░ Function Call рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред |
| Compile Time Polymorphism рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред | Runtime Polymorphism рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред |
| Function Overloading рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред | Virtual Function рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред |
| Execution рддреЗрдЬ рд╣реЛрддреА рд╣реИред | рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд Runtime Overhead рд╣реЛрддрд╛ рд╣реИред |
Real Life Examples of Polymorphism
| Object | Different Behaviors |
|---|---|
| Payment | Credit Card, UPI, Net Banking, Cash |
| Notification | Email, SMS, Push Notification |
| Shape | Circle, Rectangle, Triangle |
| Vehicle | Car, Bike, Bus |
Complete C++ Program using Runtime Polymorphism
Applications of Polymorphism
- Banking Applications.
- Hospital Management Systems.
- ERP Software.
- E-Commerce Platforms.
- Game Development.
- Graphics and Animation Software.
- Operating Systems.
- GUI Based Applications.
- Enterprise Software.
- Cloud Based Applications.
Advantages of Polymorphism
- Improves Code Reusability.
- Provides Better Flexibility.
- Reduces Code Complexity.
- Supports Dynamic Programming.
- Easy Software Maintenance.
- Improves Extensibility.
- Supports Loose Coupling.
- Enhances Software Scalability.
Limitations of Polymorphism
- Runtime Polymorphism may reduce execution speed slightly.
- Program Design becomes more complex.
- Debugging may become difficult.
- Virtual Functions consume additional memory.
- Improper use reduces readability.
Industrial Importance
Polymorphism рдЖрдзреБрдирд┐рдХ Software Engineering рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред Java, C++, C#, Python рдЬреИрд╕реА Object Oriented Languages рдореЗрдВ рдЗрд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Banking Software, ERP Systems, Android Applications, Game Engines, Cloud Platforms рддрдерд╛ Enterprise Applications рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди Objects рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди Interface рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рд╣реЗрддреБ Polymorphism рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Viva Questions
- What is Polymorphism?
- Define Compile Time Polymorphism.
- Define Runtime Polymorphism.
- Explain Function Overloading.
- Explain Operator Overloading.
- What is Function Overriding?
- What is a Virtual Function?
- Define Pure Virtual Function.
- What is an Abstract Class?
- Differentiate Early Binding and Late Binding.
Exam Oriented Important Questions
- Define Polymorphism with suitable example.
- Explain Compile Time and Runtime Polymorphism.
- Differentiate Function Overloading and Function Overriding.
- Write a C++ Program using Virtual Function.
- Explain Operator Overloading with example.
- What is an Abstract Class?
- Explain Pure Virtual Function.
- Differentiate Early Binding and Late Binding.
- Discuss Applications of Polymorphism.
- Explain Advantages and Limitations of Polymorphism.
Conclusion
Polymorphism Object Oriented Programming рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Concept рд╣реИ рдЬреЛ рдПрдХ рд╣реА Interface рдХреЛ рдЕрдиреЗрдХ Forms рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Compile Time Polymorphism рддрдерд╛ Runtime Polymorphism Software рдХреЛ рдЕрдзрд┐рдХ Flexible, Reusable рддрдерд╛ Maintainable рдмрдирд╛рддреЗ рд╣реИрдВред Function Overloading, Operator Overloading, Function Overriding, Virtual Function рддрдерд╛ Abstract Class рдЬреИрд╕реЗ Concepts рдкреНрд░рддреНрдпреЗрдХ C++ Programmer рдПрд╡рдВ RGPV B.Tech рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
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 тЖТ