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....

C++ Virtual Function Example

#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

Leave a Reply

Your email address will not be published. Required fields are marked *