Inheritance Programs
1. Single Inheritance
#include<iostream>
using namespace std;
class A
{
public:
class Account
{
public:
float salary=10000;
};
class Programmer:public Account
{
public:
float bonus=1000;
};
};
class B
{
public:
class Animal
{
public:
void eat()
{
cout<<"eat"<<endl;
}
};
class Dog:public Animal
{
public:
void bark()
{
cout<<"bark"<<endl;
}
};
};
int main()
{A::Programmer p1;
B::Dog d1;
cout<<"salary:"<<[Link]<<"\nbonus:"<<[Link]<<"\n";
[Link]();
[Link]();
}
2. Single Inheritance 2
Sol-
#include <iostream>
using namespace std;
class A
{
int a = 4;
int b = 5;
public:
int mul()
{
int c=a*b;
return c;
}
};
class B:private A
{
public:
void display()
{
int result=mul();
cout<<"Multiplication of a and b is:"<<result<<endl;
}
};
int main()
{
B b;
[Link]();
return 0;
}
3. Multiple Inheritance
Sol-
#include<iostream>
using namespace std;
class AA
{
public:
class A
{
protected:
int a;
public:
void getdata_a(int n)
{
a=n;
}
};
class B
{
protected:
int b;
public:
void getdata_b(int n)
{
b=n;
}
};
};
class BB:public AA
{
public:
class C:public A,public B
{
public:
void displaywholedata()
{
cout<<"value of a is:"<<a<<endl;
cout<<"value of b is:"<<b<<endl;
cout<<"addition is:"<<a+b;
}
};
};
int main()
{BB::C c;
c.getdata_a(10);
c.getdata_b(20);
[Link]();
return 0;
}
4. Hybrid
Sol-
#include <iostream>
using namespace std;
class A
{
protected:
int a;
public:
void getdata_a()
{
cout<<"Enter the value of 'a':"<<endl;
cin>>a;
}
};
class B:public A
{
protected:
int b;
public:
void getdata_b()
{
cout<<"Enter the value of 'b':"<<endl;
cin>>b;
}
};
class C
{
protected:
int c;
public:
void getdata_c()
{
cout<<"Enter the value of c is:"<<endl;
cin>>c;
}
};
class D : public B, public C
{
protected:
int d;
public:
void mul()
{
getdata_a();
getdata_b();
getdata_c();
cout<<"Multiplication of a,b,c is:"<<a*b*c<<endl;
}
};
int main()
{
D d;
[Link]();
return 0;
}
5. Hierarchical
Sol-
#include<iostream>
using namespace std;
class A
{ public:
int n=2,m=3;
};
class B:public A
{ public:
void getdata_b()
{cout<<m+n<<"\n";
}
};
class C:public A
{ public:
void getdata_c()
{cout<<m-n<<"\n";
}
};
class D:public A
{
public:
void getdata_d()
{cout<<m*n;
}
};
int main()
{B o1;
C o2;
D o3;
o1.getdata_b();
o2.getdata_c();
o3.getdata_d();
}
6. Multilevel
Sol-
#include<iostream>
using namespace std;
class Animal
{
public:
void eat()
{
cout<<"eat"<<endl;
}
};
class Dog:public Animal
{
public:
void bark()
{
cout<<"bark"<<endl;
}
};
class Dog_a:public Dog
{
public:
void bark2()
{
cout<<"bark2"<<endl;
}
};
int main()
{
Dog_a a1;
[Link]();
[Link]();
a1.bark2();
}
7. Ambiguous in inheritance
Sol-
//ambiguity resolution in inheritance
#include<iostream>
using namespace std;
class A
{
public:
void display()
{
cout << "Class A" << std::endl;
}
};
class B
{
public:
void display()
{
cout << "Class B" << std::endl;
}
};
class C : public A, public B
{
public:
void view()
{
A::display();
B::display();
}
};
int main()
{
C c;
[Link]();
c.B::display();
return 0;
}
8. Copy constructor
Sol-
#include<iostream>
using namespace std;
class A
{
public:
int x;
A(int a)
{
x=a;
}
A(A &b)
{
x=b.x;
}
};
int main()
{
A a1(10);
A a2(a1);
cout<<a2.x;
}
9. Function overloading
Sol-
#include<iostream>
using namespace std;
class Addition
{
public:
int Add(int x, int y)
{
return x+y;
}
int Add()
{
int a=5;
int b=10;
int c=a+b;
return c;
}
};
int main()
{
Addition a1;
cout<<[Link](10,20)<<"\n";
cout<<[Link]();
return 0;
}
10. Function overriding
Sol-
#include<iostream>
using namespace std;
class A
{
public:
void function()
{
cout<<"function1"<<endl;
}
};
class B:public A
{
public:
void function()
{
cout<<"function2"<<endl;
}
};
int main()
{
A a;
[Link]();
B b;
[Link]();
return 0;
}
11. Virtual function
Sol-
#include<iostream>
using namespace std;
class add
{
public:
virtual void print()
{
int a=5,b=10;
cout<<"base class is:"<<a+b<<endl;
}
void show()
{
cout<<"show base class"<<endl;
}
};
class sub:public add
{
public:
void print()
{
int x=20,y=10;
cout<<"derived class is:"<<x-y<<endl;
}
void show()
{
cout<<"show derived class"<<endl;
}
};
int main()
{
add *a;
sub s;
a=&s;
a->print();
a->show();
[Link]();
return 0;
}
12.