C++ 46: Polymorphism part 2

 Compile Time Polymorphism


//Testing that c++ perfor compile time polymorphism or not
#include <iostream>

using namespace std;

class Unit
{
public:
    void showData()
    {
        cout << "Unit of class showData function: " << endl;
    }
    void Convert()
    {
        cout << "Unit Class Convert function" << endl;
    }
};
class Distance : public Unit
{
private:
    int FI;

public:
    Distance(int f, int i)
    {
        F = f;
        I = i;
    }
    void showData()
    {
        cout << F << " feet and " << I << "Inches" << endl;
    }
    void Convert()
    {
        int z = F * 12 + I;
        cout << "Data of Distance Objectis :" << z << endl;
    }
};
class Time : public Unit
{
private:
    int MH;

public:
    Time(int h, int m)
    {
        M = m;
        H = h;
    }
    void showData()
    {
        cout << H << " Hours and " << M << " minutes" << endl;
    }
    void Convert()
    {
        int z = H * 60 + M;
        cout << "Data of Distance Objectis :" << z << endl;
    }
};

int main()
{
    Unit *p;

    p = new Distance(52);
    p->showData();
    p->Convert();

    Unit *q = new Time(410);
    q->showData();
    q->Convert();

    return 0;
}
}

Output:

Unit of class showData function: 
Unit Class Convert function
Unit of class showData function: 
Unit Class Convert function



Virtual Function

Virtual functions are used to achieve runtime 
Example: Calling derived class functions using Base Class Pointer. To achieve this base class function which are overrited in derived class are declared as virtual in the base class.

//Testing that c++ perfor runtime polymorphism

#include <iostream>

using namespace std;

class Unit
{
public:
    virtual void showData()
    {
        cout << "Unit of class showData function: " << endl;
    }
    virtual void Convert()
    {
        cout << "Unit Class Convert function" << endl;
    }
};
class Distance : public Unit
{
private:
    int FI;

public:
    Distance(int f, int i)
    {
        F = f;
        I = i;
    }
    void showData()
    {
        cout << F << " feet and " << I << "Inches" << endl;
    }
    void Convert()
    {
        int z = F * 12 + I;
        cout << "Data of Distance Objectis :" << z << endl;
    }
};
class Time : public Unit
{
private:
    int MH;

public:
    Time(int h, int m)
    {
        M = m;
        H = h;
    }
    void showData()
    {
        cout << H << " Hours and " << M << " minutes" << endl;
    }
    void Convert()
    {
        int z = H * 60 + M;
        cout << "Data of Distance Objectis :" << z << endl;
    }
};

int main()
{
    Unit *p;

    p = new Distance(52);
    p->showData();
    p->Convert();

    Unit *q = new Time(410);
    q->showData();
    q->Convert();

    return 0;
}

Output:

5 feet and 2Inches
Data of Distance Objectis :62
4 Hours and 10 minutes
Data of Distance Objectis :250


Testing the runtime Polymorphism 

#include <iostream>
using namespace std;
main()
{
    int age;

    cout<<"Enter your age: ";
    cin>>age;

    if(age>18){
        cout<<"You can vote";
    }
    else{
        cout<<"You cannot vote"<<endl;
    }
    return 0;
}

Output:

Enter your age: 56
You can vote



Comments

Popular posts from this blog

C++ 38: Visibility Modes Public, Private and Protected