circular object array

#include <iostream>

class CircularArray {
private:
    int* array;
    int size;
    int head;

public:
    CircularArray(int n) : size(n), head(0) {
        array = new int[size];
        for (int i = 0; i < size; ++i) {
            array[i] = 0;
        }
    }

    ~CircularArray() {
        delete[] array;
    }

    void rotate(int k) {
        head = (head + k) % size;
    }

    int& operator[](int index) {
        int adjustedIndex = (head + index) % size;
        return array[adjustedIndex];
    }
};

int main() {
    CircularArray circularArray(5);

    // Initialize the circular array
    for (int i = 0; i < 5; ++i) {
        circularArray[i] = i + 1;
    }

    // Print the initial state
    for (int i = 0; i < 5; ++i) {
        std::cout << circularArray[i] << " ";
    }
    std::cout << std::endl;

    // Rotate the array by 2 positions to the right
    circularArray.rotate(2);

    // Print the state after rotation
    for (int i = 0; i < 5; ++i) {
        std::cout << circularArray[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}