Inheritance_Program
Inheritance_Program
Private Derivation
#include <iostream>
using namespace std;
class B
{
int a; // private; not inheritable
public:
int b; // public; ready for inheritance
void get_ab();
int get_a(void);
void show_a(void);
};
class D : private B // private derivation
{
int c;
public:
void mul(void);
void display(void);
};
//————————————————————————————————
void B :: get_ab(void)
{
cout << "Enter values for a and b";
cin >> a >> b;
}
int B :: get_a()
{
return a;
}
void B :: show_a()
{
cout <<"a =" <<a <<"\n";
}
void D :: mul()
{
get_ab();
c = b * get_a(); // 'a' cannot be used directly
}
void D :: display()
{
show_a(); // outputs value of 'a'
cout << "b =" << b << "\n";
cout << "c = " << c << "\n";
}
//———————————————————————————————
int main()
{
D d;
// d.get_ab(); WON’T WORK
d.mul();
// d.get_a();WON’T WORK
d.display();
// d.b = 20; WON’T WORK; b has become private
d.mul();
d.display();
return 0;
}
O/P
Enter values for a and b5
10
a =5
b =10
c = 50
Enter values for a and b
Multilevel Inheritance:
#include <iostream>
using namespace std;
class student
{
protected:
int roll_number;
public:
void getnumber(int);
void put_number(void);
};
void student :: getnumber(int a)
{
roll_number = a;
}
void student :: put_number()
{
cout << "Roll Number: " << roll_number << "\n";
}
class test : public student // First level derivation
{
protected:
float sub1;
float sub2;
public:
void get_marks(float, float);
void put_marks(void);
};
void test :: get_marks(float x, float y)
{
sub1 = x;
sub2 = y;
}
void test :: put_marks()
{
cout << "Marks in SUB1 = " << sub1 << "\n";
cout << "Marks in SUB2 = " << sub2 << "\n";
}
class result : public test // Second level derivation
{
float total; // private by default
public:
void display(void);
};
void result :: display(void)
{
total = sub1 + sub2;
put_number();
put_marks();
cout << "Total = " << total << "\n";
}
int main()
{
result student1; // student 1 created
student1.getnumber(111);
student1.get_marks(75.0, 59.5);
student1.display();
return 0;
}
O/P
Roll Number: 111
Marks in SUB1 = 75
Marks in SUB2 = 59.5
Total = 134.5
Multiple Inheritances
#include <iostream>
using namespace std;
class M
{
protected:
int m;
public:
void get_m(int);
};
class N
{
protected:
int n;
public:
void get_n(int);
};
class P : public M, public N
{
public:
void display(void);
};
void M :: get_m(int x)
{
m = x;
}
void N :: get_n(int y)
{
n = y;
}
void P :: display(void)
{
cout << "m = " << m << "\n";
cout << "n = " << n << "\n";
cout << "m*n = " << m*n << "\n";
}
int main()
{
P p;
p.get_m(10);
p.get_n(20);
p.display();
}
O/P
m = 10
n = 20
m*n = 200