So I am having some confusion understanding dynamic binding vs upcasting. My original understanding was that when you create a base_class reference and assign it to a derived class object like: you can now call the methods/member functions of derived_class with obj.method_of_derived class(), without dynamic b…