# Hackerrank Inheritance Introduction Solution

.MathJax_SVG_LineBox {display: table!important} .MathJax_SVG_LineBox span {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}

One of the important topics of Object Oriented Programming is Inheritance. Inheritance allows us to define a class in terms of another class, which allows us in the reusability of the code.Check out the code below:

class Triangle{
public:
void triangle(){
cout<<"I am a triangle\n";
}
};


The class Triangle has a function called triangle(). Now we create a class derived from the base class Triangle called Isosceles.

class Isosceles : public Triangle{
public:
void isosceles(){
cout<<"I am an isosceles triangle\n";
}
};


Now we can create a derived class object and use it to access the functions of the base class.

int main(){
Isosceles isc;
isc.isosceles();
isc.triangle();
return 0;
}


This code will print:

I am an isosceles triangle
I am a triangle


Now write a function in Isosceles class such that the output is as given below.

Sample Output

I am an isosceles triangle
In an isosceles triangle two sides are equal
I am a triangle


### Solution in cpp

Approach 1.

#include <iostream>
using namespace std;

class Triangle{
public:
void triangle(){
cout<<"I am a triangle\n";
}
};
class Isosceles : public Triangle{
public:
void isosceles(){
cout<<"I am an isosceles triangle\n";
}
void description(){
cout<<"In an isosceles triangle two sides are equal\n";
}
};
int main(){
Isosceles isc;
isc.isosceles();
isc.description();
isc.triangle();
return 0;
}

Approach 2.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

class Triangle{
public:
void triangle(){
cout<<"I am a triangle\n";
}
};
class Isosceles : public Triangle{
public:
void isosceles(){
cout<<"I am an isosceles triangle\n";
}
void description(){
cout<<"In an isosceles triangle two sides are equal\n";
}
};
int main(){
Isosceles isc;
isc.isosceles();
isc.description();
isc.triangle();
return 0;
}


Approach 3.

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

class Triangle{
public:
void triangle(){
cout<<"I am a triangle\n";
}
};
class Isosceles : public Triangle{
public:
void isosceles(){
cout<<"I am an isosceles triangle\n";
}
void description() {
cout<<"In an isosceles triangle two sides are equal\n";
}
};
int main(){
Isosceles isc;
isc.isosceles();
isc.description();
isc.triangle();
return 0;
}