При відлагодженні програми для контролю правильності викликів віртуальних методів можна використовувати директиву компілятора $R. Якщо директива знаходиться у включеному стані {R+}, то всі виклики віртуальних методів будуть перевірятися на момент стану ініціалізації об’єкта, що виконує виклик методу. Якщо об’єкт, який виконує виклик, ще не був ініціалізований конструктором, відбудеться помилка виконання. за замовчуванням, встановлено значення {R+}
Розширюваність об’єктів
Перевагою використання віртуальних методів є те, що типи об’єктів і методи, які використовуються у модулі, можуть постачатися користувачу у вигляді TPU-файла, тобто без вихідного коду. Для роботи з об’єктами модуля необхідно знати зміст лише інтерфейсної частини модуля. Використовуючи поліморфні об’єкти і віртуальні методи, користувач TPU-файлу може вільно додавати нові методи до вже існуючих.
Нове поняття, зв’язане з додаванням нових функціональних характеристик в програму без модифікації її вихідного коду, називається спроможністю розширення. Спроможність розширення є природнім продовженням успадкування: успадковуються всі властивості, які мають породжуючі типи, а потім додаються нові при виникненні потреби в них. Пізнє зв’язування дозволяє зв’язати нові методи з вже існуючими під час виконання програми, завдяки чому розширення існуючого коду виглядає нібито невидимим, вимагаючи тільки незначного збільшення таблиці віртуальних методів.