#include <iostream> using namespace std; //Hierarchical inheritance class Shape{ public: double area(){ return 0.0; } void displayShape(){ cout<<"Generic Shape: "; } }; //Derived REctangle Class From Shape Class class Rectangle:public Shape{ double width; double length; public: //You can write like this also: Rectangle(double w, double l){ width = w; length = l; } //Both of them are same //Rectangle(double w, double l):width(w),length(l){ //} double AreaRectangle(){ return width * length; } void displayRectangleInfo(){ displayShape(); cout<<"Rectangle: \nLength = "<<length<<"\nwidth = "<<width<<"\nArea of Rectangle = "<<AreaRectangle()<<endl; } }; //Second Derived Circle class from Shape class class Circle:public Shape{ double radius; public: Circle(double r):radius(r){ } double AreaCircle(){ return 3.14 * radius * radius; } void displayCircleInfo(){ displayShape(); cout<<"Circle: \nRadius = "<<radius<<"\nArea of Circle = "<<AreaCircle()<<endl; } }; //Third Derived class from Shape class Triangle:public Shape { double base; double heigth; public: Triangle(double b, double h):base(b),heigth(h){ } double AreaTriangle(){ return 0.5 * base * heigth; } void displayTriangleInfo(){ displayShape(); cout<<"Triangle: \nBase = "<<base<<"\nHeigth = "<<heigth<<"\nArea of Triangle = "<<AreaTriangle()<<endl; } }; int main() { Rectangle rect(10.2, 20.2); rect.displayRectangleInfo(); cout<<endl; Circle c(10); c.displayCircleInfo(); cout<<endl; Triangle tri(10.2, 10.1); tri.displayTriangleInfo(); return 0; } //OUTPUT: Generic Shape: Rectangle: Length = 20.2 width = 10.2 Area of Rectangle = 206.04 Generic Shape: Circle: Radius = 10 Area of Circle = 314 Generic Shape: Triangle: Base = 10.2 Heigth = 10.1 Area of Triangle = 51.51