Sun Nov 24 2019

Virtual Inheritance

C++ Programming2491 views

File Name: virtual-inheritance.cpp

#include<iostream>
using namespace std;

/* Grandparent, Abstract class */
class person {
	protected:
		string name, gender;
		int age;

	public:
		void get_person() {
			cout << "Enter details:" << endl;
			cout << "Name:" << endl;
			cin >> name;
			cout << "Age:" << endl;
			cin >> age;
			cout << "Gender:" << endl;
			cin >> gender;
		}
	
		void display() {
			cout << "\nInformation: "<< endl;
			cout << "Name: " << name << endl;
			cout << "Age: " << age << endl;
			cout << "Gender: " << gender << endl;
		}
};

/* Inherit grandparent class as virtual */
class income : virtual public person {
	protected:
		string source;
		float amount;

	public:
		void get_income() {
			cout << "Source of Income:" << endl;
			cin >> source;
			cout << "Amount:" << endl;
			cin >> amount;
		}
	
		void display() {
			cout << "Income from: " << source << endl;
			cout << "Amount: " << amount << endl;
		}
};

/* Inherit grandparent class as virtual */
class expenses : virtual public person {
	protected:
		string purpose;
		float amount;

	public:
		void get_expenses() {
			cout << "Purpose of Expenses:" << endl;
			cin >> purpose;
			cout << "Amount:" << endl;
			cin >> amount;
		}
		void display() {
			cout << "Expenses for: " << purpose << endl;
			cout << "Amount: " << amount << endl;
		}
};

/* Inherit two parent class into one child class */
class programmer : public income, public expenses {
	float net_saving;

	public:
		void display() {
			net_saving = income :: amount - expenses :: amount;
			person :: display();
			income :: display();
			expenses :: display();
			cout << "Net Saving: " << net_saving << endl;
		}
};

int main() {
	programmer p1 = programmer();

	/* Call member functions from grandparent and parent classes */
	p1.get_person();
	p1.get_income();
	p1.get_expenses();

	/* Call display() from derived class 'programmer' */
	p1.display();
	return 0;
}


/* Output */
Enter details:
Name:
Jonh

Age:
24

Gender:
Male

Source of Income:
Programming

Amount:
10000

Purpose of Expenses:
Food

Amount:
8000


Information:
Name: Jonh
Age: 24
Gender: Male
Income from: Programming
Amount: 10000
Expenses for: Food
Amount: 8000
Net Saving: 18000
Reference:

We use cookies to improve your experience on our site and to show you personalised advertising. Please read our cookie policy and privacy policy.