#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