Create a base class `Shape` with virtual function `area()`. Derive `Rectangle` and `Triangle` to override `area()` and use a base class pointer to call functions.
SOLUTION....
#include <iostream>
using namespace std;
// Base class
class Shape {
public:
virtual void area() { // Virtual function
cout << "Base Shape area (not defined)" << endl;
}
};
// Derived class: Rectangle
class Rectangle : public Shape {
private:
float length, breadth;
public:
Rectangle(float l, float b) {
length = l;
breadth = b;
}
void area() override {
cout << "Area of Rectangle = " << (length * breadth) << endl;
}
};
// Derived class: Triangle
class Triangle : public Shape {
private:
float base, height;
public:
Triangle(float b, float h) {
base = b;
height = h;
}
void area() override {
cout << "Area of Triangle = " << (0.5 * base * height) << endl;
}
};
// Main function
int main() {
Shape* s; // Base class pointer
// Rectangle object
Rectangle r(10, 5);
s = &r; // Pointing to Rectangle
s->area(); // Calls Rectangle's area()
// Triangle object
Triangle t(6, 4);
s = &t; // Pointing to Triangle
s->area(); // Calls Triangle's area()
return 0;
}
OUTPUT
