Im not sure what ":" means but I do know that the operator appears right before any initializes in a constructor and it also appears when you derive a class from another class. I will look it up and find out, cheers.
Before the code that you write yourself in your constructor is executed, the compiler must execute constructors for all objects inside your object. If you don't do anything, it will execute all the default constructors, and the default constructors for plain C objects like int, double, or pointers do nothing.
Behind the colon in the constructor, you write a list of constructors for members of your object that you want to be called. So "m_hitpoints (hitpoints)" tells the compiler: Before executing the code in { braces } that I wrote, call the constructor for the member m_hitpoints with an argument of hitpoints, which will set m_hitpoints = hitpoints, instead of calling the default constructor for m_hitpoints which does nothing.
For plain C members this doesn't make much difference, because you could have just written the assignment m_hitpoints = hitpoints in your constructor instead. For members that are proper C++ objects in their own rights it is better telling the compiler which constructor to use after the ":" because inside your constructor code there is no way anymore to call constructors for your member objects.