	#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();
    }