#include <iostream>
using namespace std;
class Array
{
public:
int *ptr;
int one,two;
Array(int arr[])
:
one(0), two(0)
{
ptr=arr;
}
int &operator[](int index)
{
one=index;
return ptr[index];
}
Array & operator=(int x){
two=x;
return *this;
}
};
std::ostream& operator<<(std::ostream& stream, const Array& array)
{
stream << "( " << array.one << ", " << array.two << ": ";
if (array.ptr)
stream << *(array.ptr);
stream << ")";
return stream;
}
int main(void)
{
int y[]={1,2,3,4};
Array x(y);
cout << "Before assigning one element: " << x << endl;
x[1]=5;
cout << "After assigning one element: " << x << endl;
x = 7;
cout << "After operator=: " << x << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEFycmF5CnsKCnB1YmxpYzoKCiAgICBpbnQgKnB0cjsKICAgIGludCBvbmUsdHdvOwogICAgQXJyYXkoaW50IGFycltdKQogICAgOgogICAgICAgIG9uZSgwKSwgdHdvKDApCiAgICB7CiAgICAgICAgcHRyPWFycjsKICAgIH0KCgogICAgaW50ICZvcGVyYXRvcltdKGludCBpbmRleCkKICAgIHsKICAgICAgICBvbmU9aW5kZXg7CiAgICAgICAgcmV0dXJuIHB0cltpbmRleF07CiAgICB9CiAgICBBcnJheSAmIG9wZXJhdG9yPShpbnQgeCl7CiAgICAgICAgdHdvPXg7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25zdCBBcnJheSYgYXJyYXkpCnsKCXN0cmVhbSA8PCAiKCAiIDw8IGFycmF5Lm9uZSA8PCAiLCAiIDw8IGFycmF5LnR3byA8PCAiOiAiOwoJaWYgKGFycmF5LnB0cikgCgkgIHN0cmVhbSA8PCAqKGFycmF5LnB0cik7CglzdHJlYW0gPDwgIikiOwoJcmV0dXJuIHN0cmVhbTsKfQoKaW50IG1haW4odm9pZCkKewogICAgaW50IHlbXT17MSwyLDMsNH07CiAgICBBcnJheSB4KHkpOwogICAgY291dCA8PCAiQmVmb3JlIGFzc2lnbmluZyBvbmUgZWxlbWVudDogIiA8PCB4IDw8IGVuZGw7CiAgICB4WzFdPTU7CiAgICBjb3V0IDw8ICJBZnRlciAgYXNzaWduaW5nIG9uZSBlbGVtZW50OiAiIDw8IHggPDwgZW5kbDsKICAgIHggPSA3OwogICAgY291dCA8PCAiQWZ0ZXIgIG9wZXJhdG9yPTogICAgICAgICAgICAgIiA8PCB4IDw8IGVuZGw7Cn0=