Pages

Monday, April 7, 2014

Practical Example of Using Virtual Functions II

From the past few articles we have been discussing about Virtual
Functions.
Before taking up another topic for discussion I thought
of providing one more example of how and when virtual functions may be used.
So, here it is, a practical
example of virtual function.


As virtual functions and Run-Time
Polymorphism
goes hand-in-hand so the example here may also serve as
an example of the use of run-time polymorphism.



// Example to illustrate
// the use of virtual functions
// and run-time polymorphism
#include <iostream.h>

// -- SORT CLASS --
class sort
{
protected:
int *arr;
int num_elmnt;

public:
sort(int);
~sort();
void get_elmnt();
void show_elmnt();
virtual void do_sorting()=0;
};

// takes an argument
// which is the number of
// elements we want
sort::sort(int x)
{
num_elmnt=x;
arr=new int[num_elmnt];
}

sort::~sort()
{
// free up he allocated memory
delete []arr;
}

void sort::get_elmnt()
{
// input elements
cout<<"
Enter Elements..."
;
for(int i=0;i<num_elmnt;i++)
{
cout<<"
#"
<<i+1<<":";
cin>>arr[i];
}
}

void sort::show_elmnt()
{
// display the elements
cout<<"
Elements are..."
;
for(int i=0;i<num_elmnt;i++)
{
cout<<"
#"
<<i+1<<":";
cout<<arr[i];
}
}
// -- SORT CLASS ENDS --

// -- BUBBLE SORT CLASS --
class bubble_sort : public sort
{
public:
// constructor only calls the
// base constructor with the
// parameter
bubble_sort(int x):sort(x){}

void do_sorting();
};

void bubble_sort::do_sorting()
{
int temp;

// do bubble sorting
for(int i=0;i<num_elmnt;i++)
for(int j=0; j<(num_elmnt-1); j++)
if (arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
// -- BUBBLE SORT CLASS ENDS --

// -- SELECTION SORT CLASS --
class selctn_sort : public sort
{
public:
// just call the base class
// constructor
selctn_sort(int x):sort(x){}
void do_sorting();
};

void selctn_sort::do_sorting()
{
int temp;

// do selection sorting
for(int i=0;i<(num_elmnt-1);i++)
for(int j=i+1;j<num_elmnt;j++)
{
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
};
// -- SELECTION SORT CLASS ENDS --

void main()
{
bubble_sort bubble(3);
selctn_sort selctn(5);
sort *ptr;

ptr=&bubble;
ptr->get_elmnt();
ptr->do_sorting();

ptr=&selctn;
ptr->get_elmnt();
ptr->do_sorting();

// again point to bubble
ptr=&bubble;
ptr->show_elmnt();

// again point to selctn
ptr=&selctn;
ptr->show_elmnt();
}


Related Articles:


Related Posts by Categories

0 comments:

Post a Comment