Just a list of things to take mindful consideration of when designing C++ objects. This blog post will grow as I keep making mistakes.

Assignment Operator

Destructor

/* The initializer list executes first! */
SomeObject(int arg1, std::string arg2) : m_arg1(arg1), m_arg2(arg2) { 
    /* Some code here */
    /* This gets executed second! */
}

~SomeObject(){
	/* This gets executed first! */
} /* Destruction happens second! */