#include <iostream>
using namespace std;
class Dog
{
public:
Dog(int val){
this->pVal = new int(val);
}
~Dog(){
delete this->pVal;
}
static int GetVal(const Dog& d){
return *(d.pVal);
}
int *pVal;
};
int main() {
Dog fido(20);
std::cout << Dog::GetVal(fido) << endl; //20 and destructor for fido called
Dog rex(21);
std::cout << Dog::GetVal(fido) << endl; //21 but should be 20
std::cout << Dog::GetVal(rex) << endl; // should be 21
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmNsYXNzIERvZwp7CnB1YmxpYzoKCkRvZyhpbnQgdmFsKXsKIHRoaXMtPnBWYWwgPSBuZXcgaW50KHZhbCk7Cn0KCn5Eb2coKXsKIGRlbGV0ZSB0aGlzLT5wVmFsOwp9CgpzdGF0aWMgaW50IEdldFZhbChjb25zdCBEb2cmIGQpewogIHJldHVybiAqKGQucFZhbCk7Cn0KCmludCAqcFZhbDsKfTsKCmludCBtYWluKCkgewpEb2cgZmlkbygyMCk7CnN0ZDo6Y291dCA8PCBEb2c6OkdldFZhbChmaWRvKSA8PCBlbmRsOyAgLy8yMCBhbmQgZGVzdHJ1Y3RvciBmb3IgZmlkbyBjYWxsZWQKRG9nIHJleCgyMSk7CnN0ZDo6Y291dCA8PCBEb2c6OkdldFZhbChmaWRvKSA8PCBlbmRsOyAvLzIxIGJ1dCBzaG91bGQgYmUgMjAgCnN0ZDo6Y291dCA8PCBEb2c6OkdldFZhbChyZXgpIDw8IGVuZGw7ICAgLy8gc2hvdWxkIGJlIDIxCgoJcmV0dXJuIDA7Cn0=