Monday, February 15, 2016

VIRTUAL BASE CLASSES

VIRTUAL BASE CLASSES

     An ambiguity can arise when several paths exist to a class from the same base class. This means that a child class could have duplicate sets of members inherited from a single base class. C++ solves this issue by introducing a virtual base class. When a class is made virtual, necessary care is taken so that the duplication is avoided regardless of the number of paths that exist to the child class.



Example:
#include<iostream.h>
#include<conio.h>
 
class student
{
   int rno;
  public:
   void getnumber()
   {
              cout<<"Enter Roll No:";
              cin>>rno;
   }
   void putnumber()
   {
              cout<<"\n\n\tRoll No:"<<rno<<"\n";
   }
};
 
class test:virtual public student
{
  
  public:
   int part1,part2;
   void getmarks()
   {
              cout<<"Enter Marks\n";
              cout<<"Part1:";
              cin>>part1;
              cout<<"Part2:";
              cin>>part2;
   }
   void putmarks()
   {
              cout<<"\tMarks Obtained\n";
              cout<<"\n\tPart1:"<<part1;
              cout<<"\n\tPart2:"<<part2;
   }
};

class sports:public virtual student
{
 
  public:
    int score;
    void getscore()
    {
              cout<<"Enter Sports Score:";
              cin>>score;
    }
    void putscore()
    {
              cout<<"\n\tSports Score is:"<<score;
    }
};

class result:public test,public sports
{
    int total;
  public:
   void display()
   {
      total=part1+part2+score;
      putnumber();
      putmarks();
      putscore();
      cout<<"\n\tTotal Score:"<<total;
   }
};
 
void main()
{
   result obj;
   clrscr();
   obj.getnumber();
   obj.getmarks();
   obj.getscore();
   obj.display();
   getch();
}

Output:

Enter Roll No: 200
 Enter Marks
 Part1: 90
Part2: 80
Enter Sports Score: 80
 Roll No: 200
 Marks Obtained
Part1: 90
Part2: 80
Sports Score is: 80
 Total Score is: 250

No comments:

Post a Comment