References and Inheritance
Assigning a predecessor object to an ancestor reference is considered to be a widening conversion, and can be performed by simple assignment
Assigning an ancestor object to a predecessor reference can also be done, but it is considered to be a narrowing conversion and must be done with a cast
The widening conversion is the most useful