Foreword
Let me tell you here, I am neither a Game Developer nor a C++ Expert. I like writing C++ and I know I am pretty bad at it. If you are here to learn writing production ready code then this is not the right place for you.
But I am sure this won't be a waste of time if you continue till the end. After all we will be writing a 2D game. That should be fun.