Я не думаю, что сравнение стоимости между вызовом виртуальной функции и прямым вызовом функции. Если Вы думаете об использовании абстрактного базового класса (интерфейс), то у Вас есть ситуация, где Вы хотите выполнить одно из нескольких действий, базирующихся динамического типа объекта. Необходимо сделать тот выбор так или иначе. Одна опция состоит в том, чтобы использовать виртуальные функции. Другой - переключатель на типе объекта, или через (потенциально дорогой) RTTI, или через добавление типа () метод к базовому классу (потенциально увеличивающий использование памяти каждого объекта). Таким образом, стоимость вызова виртуальной функции должна сравниться со стоимостью альтернативы, не к стоимости выполнения ничего.
Устаревшее состояние - это информация в объекте, которая не отражает реальность.
Пример: элементы объекта заполнены информацией из базы данных, но основные данные в базе данных изменились с момента заполнения объекта.
Опасно устаревшее состояние - это устаревшее состояние, которое может отрицательно повлиять на работу программы, то есть заставляет его работать неправильно из-за неверных предположений о целостности данных.
В основном это означает недопустимое состояние. Обычно это побочный продукт отсутствия уведомления об изменении состояния.
Это происходит, когда значение, хранящееся в объекте, больше не отражает базовое постоянное значение. Я полагаю, что опасно устаревшее значение - это просто способ сказать, что значение действительно устарело.
«Устаревшее состояние» - это когда сохраненное (кэшированное) представление объекта остальной системы становится устаревшим. Например, объект удерживает дескриптор другого объекта, но второй объект тем временем был удален.
Попытка разыменовать устаревший дескриптор может привести к большим проблемам.
Большинство систем попытаются автоматически защитить вас от различные причины появления устаревшего состояния, но не всегда возможно охватить каждый случай. (В зависимости от системы.)
Ларри