Downcasting enables:
1. A derived-class object to be treated as a base-class object.
2. A base-class object to be treated as a derived-class object.
3. Making a base-class pointer into a derived-class pointer.
4. Making a derived-class pointer into a base -class pointer.