How does this do what it does (C++ classes, use of colon)

There might be more than one “right” way, but in this case, there is a clear problem: you cannot initialize an array member in a constructor. This problem can be trivially solved by using a std::array.

If you insist on using C-style arrays, you cannot initialize it directly, you have to memcpy the contents manually, specifying the size, with the caveat that it only works for TriviallyCopyable types, so you have to explain what those are, if the type is not trivially copyable, you have to resort to std::copy or write a for loop manually ... That's an awful amount of complexity just to initialize an array member.
Or you could use a std::array which just works like any other variable, in all cases without caveats.