#include <iostream>
using namespace std;
class IntNode {
public:
IntNode(int value) {
numVal = new int;
*numVal = value;
}
IntNode(const IntNode& origObject) {
cout << "Copying " << *(origObject.numVal) << endl;
numVal = new int;
*numVal = *(origObject.numVal);
}
~IntNode() {
delete numVal;
}
void SetNumVal(int val) { *numVal = val; }
int GetNumVal() { return *numVal; }
private:
int* numVal;
};
int main() {
IntNode node1(3);
IntNode node2 = node1;
node2.SetNumVal(5);
cout << node1.GetNumVal() << " " << node2.GetNumVal() << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW50Tm9kZSB7CiAgIHB1YmxpYzoKICAgICAgSW50Tm9kZShpbnQgdmFsdWUpIHsKICAgICAgICAgbnVtVmFsID0gbmV3IGludDsKICAgICAgICAgKm51bVZhbCA9IHZhbHVlOwogICAgICB9IAogICAgICBJbnROb2RlKGNvbnN0IEludE5vZGUmIG9yaWdPYmplY3QpIHsKICAgICAgICAgY291dCA8PCAiQ29weWluZyAiIDw8ICoob3JpZ09iamVjdC5udW1WYWwpIDw8IGVuZGw7CiAgICAgICAgIG51bVZhbCA9IG5ldyBpbnQ7CiAgICAgICAgICpudW1WYWwgPSAqKG9yaWdPYmplY3QubnVtVmFsKTsKICAgICAgfSAKICAgICAgfkludE5vZGUoKSB7CiAgICAgICAgIGRlbGV0ZSBudW1WYWw7CiAgICAgIH0gCiAgICAgIHZvaWQgU2V0TnVtVmFsKGludCB2YWwpIHsgKm51bVZhbCA9IHZhbDsgfQogICAgICBpbnQgR2V0TnVtVmFsKCkgeyByZXR1cm4gKm51bVZhbDsgfQogICBwcml2YXRlOgogICAgICBpbnQqIG51bVZhbDsKfTsKCmludCBtYWluKCkgewogICBJbnROb2RlIG5vZGUxKDMpOwogICBJbnROb2RlIG5vZGUyID0gbm9kZTE7CgogICBub2RlMi5TZXROdW1WYWwoNSk7CiAgIGNvdXQgPDwgbm9kZTEuR2V0TnVtVmFsKCkgPDwgIiAiIDw8IG5vZGUyLkdldE51bVZhbCgpIDw8IGVuZGw7CgogICByZXR1cm4gMDsKfQ==