#include <iostream>
// Base class
class Number {
protected:
    int value;
public:
    Number(int _value) : value(_value) {}
   virtual void display() const {
        std::cout << "Value: " << value << std::endl;
    }
    virtual void swap(Number& other) {
        std::swap(value, other.value);
    }
};
// Derived class 1
class NumberA : public Number {
public:
    NumberA(int _value) : Number(_value) {}

    void display() const override {
        std::cout << "NumberA - ";
        Number::display();
    }
};
// Derived class 2
class NumberB : public Number {
public:
    NumberB(int _value) : Number(_value) {}
 void display() const override {
        std::cout << "NumberB - ";
        Number::display();
    }
};
int main() {
    NumberA numA(5);
    NumberB numB(10);

    std::cout << "Before swapping:\n";
    numA.display();
    numB.display();
  // Swapping numbers using the base class pointer
    Number* ptrA = &numA;
    Number* ptrB = &numB;

    ptrA->swap(*ptrB);
  std::cout << "\nAfter swapping:\n";
    numA.display();
    numB.display();
return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: