Обычно функция-ловушка — это функция, которая вызывается, когда происходят определенные события.
Существует много дискуссий о различиях между функцией-ловушкой и функцией обратного вызова. Ответ зависит от разных языков программирования. По моему собственному опыту, функция обратного вызова обычно регистрируется через низкоуровневые API, такие как sigaction().
Возможно, мы с вами использовали функции-ловушки еще до того, как узнали термин перехватчик.
Возьмем в качестве примера виртуальную функцию на C++. Компилятор не знает, какую производную функцию следует вызывать. Следовательно, среда выполнения C++ должна заменить содержимое указателя функции на основе функции правильной функцией в таблице виртуальных функций.
В этом красота полиморфизма.
Нам не нужно напрямую вызывать производные функции. Среда выполнения C++ помогает нам находить и вызывать правильные функции.
Дополнительные примеры приведены ниже.
- Таблица виртуальных функций в C++
- MEM_CHECK_ в glibc
- LD_PRELOAD
- …