sorry. i didn't look at the code closely enough with so many similar symbol names
not sure your question is about inheritance, passing array arguments, ...
arguments can be pointers which can represent arrays (e.g. c-string). (& sym prevents passing null pts)
the 3rd aspect is constructor vs begin(). seems that begin() make more sense if initialization needs to be postponed (e.g. after HW is initialized)
another aspect is the array is maintained external to the class. an alternative would be to have an object for each pin
programming has always been "religious" -- people advocating how things should be done. trivial examples are often confusing because they're so contrived. "bundling" data and function is an age old concept.
inheritance and virtual functions is the next level on the ladder. again, having a good example that needs it makes it easier to understand