LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Похоже, что для реализации плохо то, что если у нас переменная типа «Предок», то это означает «Предок или его любой Потомок» и мы не можем убрать VMT для вызова Предок::ВиртуальныйМетод.

Но это скорее проблема языка, в котором нет разницы между «В точности Предок» и «Предок или его любой Потомок».

Достаточно добавить в язык возможность определить переменную типа «В точности Предок» - и можно избавиться от VMT во многих случаях.

Исходная версия den73, :

Похоже, что для реализации плохо то, что если у нас переменная типа «Предок», то это означает «предок или потомок» и мы не можем убрать VMT для вызова Предок::ВиртуальныйМетод.

Но это скорее проблема языка, в котором нет разницы между «Ровно Предок» и «Предок или Потомок».

Достаточно добавить в язык возможность определить переменную типа «Ровно Предок» - и можно избавиться от VMT в тех случаях, где у нас «Ровно Предок».