You can even write the first one without "this".
Your orginal problem was that the local variable "hid" the member (local scope is resolved before instance scope).
It is just good practise to use the initialization list for its intended purpose.
A const member can only be initialized that way, a complex member might be not be default constructible or doing so would be a waste if it is overwritten right after.
Neither "makes" it a member, declaring it as a member makes it a member.
Cheers,
_
Bookmarks