Maybe the copy constructor for Base2(constBase1&) is a converting constructor, not a true copy constructor its according to my insights. I believe it's better to explicitly define a copy constructor for ensuring proper constructor selection.