#include <iostream>
#include <cstdlib>
using namespace std;
class Array
{
public:
//ctor dtor and operator overloading
Array(int);
Array(int *, int);
~Array();
int& operator[](int i);
//here memebers are defined
int *arr;
int size;
};
Array::Array(int g = 1) :size(g) //diplomatic value for size =1
{
arr = new int[size];
}
Array::Array(int *p, int m_size=1) :arr(p), size(m_size)
{}
Array::~Array()
{
delete[] arr;
}
int& Array::operator[] (int i){
return arr[i];
}
int main() {
Array arr(6);
arr[3] = 6; //code crashes here
printf("%d\n", arr[0]);
printf("%d\n", arr[3]);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpjbGFzcyBBcnJheQp7CnB1YmxpYzoKLy9jdG9yIGR0b3IgYW5kIG9wZXJhdG9yIG92ZXJsb2FkaW5nCiAgICBBcnJheShpbnQpOwogICAgQXJyYXkoaW50ICosIGludCk7CiAgICB+QXJyYXkoKTsKICAgIGludCYgb3BlcmF0b3JbXShpbnQgaSk7Ci8vaGVyZSBtZW1lYmVycyBhcmUgZGVmaW5lZAogICAgaW50ICphcnI7CiAgICBpbnQgc2l6ZTsKfTsKCkFycmF5OjpBcnJheShpbnQgZyA9IDEpIDpzaXplKGcpIC8vZGlwbG9tYXRpYyB2YWx1ZSBmb3Igc2l6ZSA9MQp7CiAgICBhcnIgPSBuZXcgaW50W3NpemVdOwp9CkFycmF5OjpBcnJheShpbnQgKnAsIGludCBtX3NpemU9MSkgOmFycihwKSwgc2l6ZShtX3NpemUpCnt9IAoKQXJyYXk6On5BcnJheSgpCnsKICAgIGRlbGV0ZVtdIGFycjsKfQoKaW50JiBBcnJheTo6b3BlcmF0b3JbXSAoaW50IGkpewogICAgcmV0dXJuIGFycltpXTsKfQoKaW50IG1haW4oKSB7CiAgICBBcnJheSBhcnIoNik7CiAgICBhcnJbM10gPSA2OyAvL2NvZGUgY3Jhc2hlcyBoZXJlCiAgICBwcmludGYoIiVkXG4iLCBhcnJbMF0pOwogICAgcHJpbnRmKCIlZFxuIiwgYXJyWzNdKTsKICAgIHJldHVybiAwOwoKfQ==