C++.Бархатный путь



         

Указатели на объекты - часть 3


//pObj->Fun2(2); //pObj->AC::Fun1(2);

То ли дело указатель на объект производного типа! И опять здесь нет ничего нового и неожиданного. С "нижнего этажа бункера" видны все "этажи"!

AC* pObjAC = &MyAC; pObjAC->Fun1(2); pObjAC->Fun2(2); pObjAC->AC::Fun1(2); pObjAC->Fun1(2); pObjAC->A::Fun1(2);

И, разумеется, указатель на объект производного класса не настраивается на объект базового. //pObjAC = &MyA;

Основной итог этого раздела заключается в следующем: указатель на объект базового класса можно настроить на объект производного типа. Через этот указатель можно "увидеть" лишь фрагмент объекта производного класса - его "базовую" часть - то, что объект получает в наследство от своих предков. Решение о том, какая функция должна быть вызвана, принимается транслятором. В момент выполнения программы всё уже давно решено. Какая функция будет вызвана из объекта производного типа - зависит от типа указателя, настроенного на данный объект. В этом случае мы наблюдаем классический пример статического связывания.




Содержание  Назад  Вперед