#include <iostream>
class A
{
public:
A(int& x) : m_x(x) {}
const int& getX() const { return m_x; }
void DecrX() { --m_x; }
void print() { std::cout << "A::m_x= " << m_x << std::endl << std::endl; }
private:
int& m_x;
};
A calculateStuffAndReturnAnAForMe(int x, int y)
{
int z = x + y;
A a(z);
return a;
}
int main()
{
A badData = calculateStuffAndReturnAnAForMe(5, 10);
badData.print(); // badData's m_x is a reference to z, which is no-longer valid.
std::string input;
std::cout << "Enter your name: ";
std::cin >> input;
std::cout << std::endl << "You entered: " << input << std::endl;
badData.print();
}
CSNpbmNsdWRlIDxpb3N0cmVhbT4KCQoJY2xhc3MgQQoJewoJcHVibGljOgoJCUEoaW50JiB4KSA6IG1feCh4KSB7fQoJCWNvbnN0IGludCYgZ2V0WCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQoJCXZvaWQgRGVjclgoKSB7IC0tbV94OyB9CgkJdm9pZCBwcmludCgpIHsgc3RkOjpjb3V0IDw8ICJBOjptX3g9ICIgPDwgbV94IDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmVuZGw7IH0KCXByaXZhdGU6CgkJaW50JiBtX3g7Cgl9OwoJCiAgICBBIGNhbGN1bGF0ZVN0dWZmQW5kUmV0dXJuQW5BRm9yTWUoaW50IHgsIGludCB5KQogICAgewogICAgICAgIGludCB6ID0geCArIHk7CiAgICAgICAgQSBhKHopOwogICAgICAgIHJldHVybiBhOwogICAgfQoKICAgIGludCBtYWluKCkKICAgIHsKICAgICAgICBBIGJhZERhdGEgPSBjYWxjdWxhdGVTdHVmZkFuZFJldHVybkFuQUZvck1lKDUsIDEwKTsKICAgICAgICBiYWREYXRhLnByaW50KCk7IC8vIGJhZERhdGEncyBtX3ggaXMgYSByZWZlcmVuY2UgdG8geiwgd2hpY2ggaXMgbm8tbG9uZ2VyIHZhbGlkLgogICAgICAgIHN0ZDo6c3RyaW5nIGlucHV0OwogICAgICAgIHN0ZDo6Y291dCA8PCAiRW50ZXIgeW91ciBuYW1lOiAiOwogICAgICAgIHN0ZDo6Y2luID4+IGlucHV0OwogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGwgPDwgIllvdSBlbnRlcmVkOiAiIDw8IGlucHV0IDw8IHN0ZDo6ZW5kbDsKICAgICAgICBiYWREYXRhLnByaW50KCk7CiAgICB9