In a C++ programming language to overcome the ambiguity problem occurred due to multipath inheritance we use “virtual” keyword.
By using the “virtual” keyword we can declares the specified class virtual.
When a class declared as virtual, then the compiler takes necessary precaution to avoid the duplication of member variable.
We can make a class virtual if it is a base class and is used by more than one derived classes as their base class.
Example: Write a program to declare virtual base classes. Derive a class using two virtual base class.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream> using namespace std; class A1 { protected: int a1; }; class A2: public virtual A1 { // virtual declaration protected: int a2; }; class A3: public virtual A1 { // virtual declaration protected: int a3; }; class A4: public A2, A3 { // virtual declaration protected: int a4; public: void getdata() { cout << "Enter values of a1, a2, a3, a4"; cin >> a1 >> a2 >> a3 >> a4; } void showdata() { cout << "values of a1, a2, a3, a4 = "; cout << a1 << a2 << a3 << a4; } }; int main() { A4 obj; obj.getdata(); obj.showdata(); return 0; } |
Output
1 2 3 | Enter values of a1, a2, a3, a4 10 20 30 40 values of a1, a2, a3, a4= 10 20 30 40 |