#include <iostream>
using namespace std;

class SomeClass
{
private:
	int i = 0;
	
public:
	SomeClass() { cout << "default constructor\n"; };
	SomeClass(int val) { i = val; cout << "constructor getting int: " << val << '\n'; };
	~SomeClass() { cout << "destrucing object having i: " << i << '\n'; };
	
	SomeClass& operator=(const SomeClass& rhs) { 
		cout << "operator= getting int: " << rhs.i << '\n';
		if (this != &rhs) {
			i = rhs.i;
		}
		return *this;
	}
};

int main() {
	SomeClass a(10);
	SomeClass b = SomeClass(20);
	SomeClass c(35);
	c = SomeClass(46);
	return 0;
}