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 Function тЖТ Multiple Behaviors

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 рдЗрд╕рдХреЗ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

class Demo { public: void show() { cout << "No Parameter"; } void show(int x) { cout << x; } };

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 рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

class Calculator { public: int add(int a,int b) { return a+b; } double add(double a,double b) { return a+b; } };

Operator Overloading

C++ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз Operators рдЬреИрд╕реЗ +, -, *, == рдЖрджрд┐ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ User Defined Objects рдХреЗ рд▓рд┐рдП рдмрджрд▓рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ Operator Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

Function Overriding

рдЬрдм Derived Class, Base Class рдХреЗ рдХрд┐рд╕реА Function рдХреЛ рдЙрд╕реА рдирд╛рдо рддрдерд╛ рд╕рдорд╛рди Parameters рдХреЗ рд╕рд╛рде рдкреБрдирдГ Define рдХрд░рддреА рд╣реИ, рддрдм рдЙрд╕реЗ Function Overriding рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Runtime Polymorphism рдХрд╛ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИред

class Animal { public: void sound() { cout<<"Animal Sound"; } }; class Dog : public Animal { public: void sound() { cout<<"Dog Bark"; } };

Virtual Function

Virtual Function рдРрд╕рд╛ Member Function рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ Base Class рдореЗрдВ virtual Keyword рдХреЗ рд╕рд╛рде Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Base Class Pointer рджреНрд╡рд╛рд░рд╛ Derived Class рдХрд╛ рд╕рд╣реА Function Runtime рдкрд░ Call рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

class Animal { public: virtual void sound() { cout<<"Animal"; } };

Pure Virtual Function

рдЬрд┐рд╕ Virtual Function рдХреА рдХреЛрдИ Implementation Base Class рдореЗрдВ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рдФрд░ рдЙрд╕реЗ = 0 рджреНрд╡рд╛рд░рд╛ Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕реЗ Pure Virtual Function рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

class Shape { public: virtual void draw() = 0; };

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

#include<iostream> using namespace std; class Animal { public: virtual void sound() { cout<<"Animal Sound"<sound(); return 0; }

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

  1. What is Polymorphism?
  2. Define Compile Time Polymorphism.
  3. Define Runtime Polymorphism.
  4. Explain Function Overloading.
  5. Explain Operator Overloading.
  6. What is Function Overriding?
  7. What is a Virtual Function?
  8. Define Pure Virtual Function.
  9. What is an Abstract Class?
  10. Differentiate Early Binding and Late Binding.

Exam Oriented Important Questions

  1. Define Polymorphism with suitable example.
  2. Explain Compile Time and Runtime Polymorphism.
  3. Differentiate Function Overloading and Function Overriding.
  4. Write a C++ Program using Virtual Function.
  5. Explain Operator Overloading with example.
  6. What is an Abstract Class?
  7. Explain Pure Virtual Function.
  8. Differentiate Early Binding and Late Binding.
  9. Discuss Applications of Polymorphism.
  10. 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 тЖТ