Learn and grow,don't be slow

Polymorhism in C plus plus

Polymorphism

The term “Polymorphism” is the combination of “poly” + “morphs” which means many forms. It is a greek word. In object-oriented programming, we use 3 main concepts: inheritance, encapsulation and polymorphism.

There are two types of polymorphism in C++:

Compile time polymorphism: It is achieved by function overloading and operator overloading which is also known as static binding or early binding.

Runtime polymorphism: It is achieved by method overriding which is also known as dynamic binding or late binding.

C++ Runtime Polymorphism Example

Let’s see a simple example of runtime polymorphism in C++.

#include <iostream>

usingnamespace std;

class Animal {

public:

void eat(){

cout<<“Eating…”;

}

};

class Dog: public Animal

{

public:

void eat()

{

cout<<“Eating bread…”;

}

};

int main(void) {

Dog d = Dog();

d.eat();

return 0;

}

Output:

Eating bread...

C++ Runtime Polymorphism Example: By using two derived class

Let’s see another example of runtime polymorphism in C++ where we are having two derived classes.

#include <iostream>

usingnamespace std;

class Shape {

public:

virtualvoid draw(){

cout<<“drawing…”<<endl;

}

};

class Rectangle: public Shape

{

public:

void draw()

{

cout<<“drawing rectangle…”<<endl;

}

};

class Circle: public Shape

{

public:

void draw()

{

cout<<“drawing circle…”<<endl;

}

};

int main(void) {

Shape *s;

Shape sh;

Rectangle rec;

Circle cir;

s=&sh;

s->draw();

s=&rec;

s->draw();

s=○

s->draw();

}

Output:

drawing...
drawing rectangle...
drawing circle...

Runtime Polymorphism with Data Members

Runtime Polymorphism can be achieved by data members in C++. Let’s see an example where we are accessing the field by reference variable which refers to the instance of derived class.