That is correct, if you plan on having the chain of command executed then they need to be linked together and that is only done via a virtual method where the addresses get put in a table..
So calling the first Constructor will actually call the newest one at the top, that is, the one you just inherited to.
which is why its also important to first call the "inherited" which calls the next one down and that one should do the same.
At some point it reaches the bottom class, the first one where it was originally created and thus does its code then returns, and it returns back to the next higher one and repeats this until it reaches your top one, the newest..
This is also a good reason if you were to type cast over the class to attempt access to a lower level constructor or method of virtual, the execution of it would simply call the newest one first so there is no gain in casting in this manner.
Of course there are ways to get around that limitation