Mega Code Archive

 
Categories / C++ Tutorial / Class
 

A multilevel hierarchy

#include <iostream>  #include <cstring>  using namespace std;    class Shape {    // private    double width;    double height;  public:    Shape() {      width = height = 0.0;    }      Shape(double w, double h) {      width = w;      height = h;    }      Shape(double x) {      width = height = x;    }      void display() {      cout << "Width and height are " << width << " and " << height << "\n";    }      double getWidth() { return width; }    double getHeight() { return height; }    void setWidth(double w) { width = w; }    void setHeight(double h) { height = h; }  };    class Triangle : public Shape {    char style[20]; public:      /* This automatically invokes the default constructor of Shape. */    Triangle() {      strcpy(style, "unknown");    }      Triangle(char *str, double w, double h) : Shape(w, h) {      strcpy(style, str);    }        Triangle(double x) : Shape(x) {      strcpy(style, "isosceles");     }      double area() {      return getWidth() * getHeight() / 2;    }      void showStyle() {      cout << "Triangle is " << style << "\n";    }  };    class NameTriangle : public Triangle {    char name[20];  public:    NameTriangle(char *clr, char *style, double w, double h) : Triangle(style, w,  h) {      strcpy(name, clr);    }      void displayName() {      cout << "Name is " << name << "\n";    }  };    int main() {    NameTriangle t1("A", "right", 8.0, 12.0);    NameTriangle t2("B", "isosceles", 2.0, 2.0);      t1.showStyle();    t1.display();    t1.displayName();    cout << "Area is " << t1.area() << "\n";      t2.showStyle();    t2.display();    t2.displayName();    cout << "Area is " << t2.area() << "\n";      return 0;  } Triangle is right Width and height are 8 and 12 Name is A Area is 48 Triangle is isosceles Width and height are 2 and 2 Name is B Area is 2