#include <iostream>
class Object
{
public:
Object()
{
_value = new int{42};
}
~Object()
{
delete _value;
_value = nullptr;
}
int getInt()
{
return *_value;
}
int* _value;
};
class Object2
{
public:
Object2(Object* object)
{
_object = object;
}
~Object2()
{
delete _object;
_object = nullptr;
}
int getInt()
{
return _object->getInt();
}
Object* _object;
};
void function_calling_object2(Object& object)
{
Object2 object2(&object);
std::cout << "function_calling_object2: " << object2.getInt() << std::endl;
}
int main() {
Object object;
std::cout << "Object in main 1: " << object.getInt() << std::endl;
function_calling_object2(object);
std::cout << "Object in main 2: " << object.getInt() << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCmNsYXNzIE9iamVjdAp7CnB1YmxpYzoKICAgIE9iamVjdCgpCiAgICB7CiAgICAgICAgX3ZhbHVlID0gbmV3IGludHs0Mn07CiAgICB9CiAgICAKICAgIH5PYmplY3QoKQogICAgewogICAgICAgIGRlbGV0ZSBfdmFsdWU7CiAgICAgICAgX3ZhbHVlID0gbnVsbHB0cjsKICAgIH0KICAgIAogICAgaW50IGdldEludCgpCiAgICB7CiAgICAgICAgcmV0dXJuICpfdmFsdWU7CiAgICB9CiAgICAKICAgIGludCogX3ZhbHVlOwp9OwoKY2xhc3MgT2JqZWN0Mgp7CnB1YmxpYzoKICAgIE9iamVjdDIoT2JqZWN0KiBvYmplY3QpCiAgICB7CiAgICAgICAgX29iamVjdCA9IG9iamVjdDsKICAgIH0KICAgIAogICAgfk9iamVjdDIoKQogICAgewogICAgICAgIGRlbGV0ZSBfb2JqZWN0OwogICAgICAgIF9vYmplY3QgPSBudWxscHRyOwogICAgfQogICAgCiAgICBpbnQgZ2V0SW50KCkKICAgIHsKICAgICAgICByZXR1cm4gX29iamVjdC0+Z2V0SW50KCk7CiAgICB9CgogICAgT2JqZWN0KiBfb2JqZWN0Owp9OwoKdm9pZCBmdW5jdGlvbl9jYWxsaW5nX29iamVjdDIoT2JqZWN0JiBvYmplY3QpCnsKICAgIE9iamVjdDIgb2JqZWN0Migmb2JqZWN0KTsKICAgIAogICAgc3RkOjpjb3V0IDw8ICJmdW5jdGlvbl9jYWxsaW5nX29iamVjdDI6ICIgPDwgb2JqZWN0Mi5nZXRJbnQoKSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgewogICAgT2JqZWN0IG9iamVjdDsKICAgIHN0ZDo6Y291dCA8PCAiT2JqZWN0IGluIG1haW4gMTogIiA8PCBvYmplY3QuZ2V0SW50KCkgPDwgc3RkOjplbmRsOwogICAgZnVuY3Rpb25fY2FsbGluZ19vYmplY3QyKG9iamVjdCk7ICAgIAogICAgc3RkOjpjb3V0IDw8ICJPYmplY3QgaW4gbWFpbiAyOiAiIDw8IG9iamVjdC5nZXRJbnQoKSA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQ==