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