#include <iostream>

class Foo
{
private:
	int m_data;
	
public:
	Foo(int data)
	: m_data(data)
	{
		
	}

	Foo& operator=(const Foo& other)
	{
		if (this == &other)
		{
			return *this;
		}
		
		m_data = other.m_data;
		return *this;
	}
	
	int GetData()
	{
		return m_data;
	}
};

int main() 
{
	auto a = Foo(42);
	auto b = Foo(24);
	auto c = Foo(10);
	
	a = b = c;
	
	std::cout << &a << ": " << a.GetData() << std::endl;
	std::cout << &b << ": " << b.GetData() << std::endl;
	std::cout << &c << ": " << c.GetData() << std::endl;
	
	return 0;
}