На странице 57 Дизайна и Эволюции C++, доктор Stroustrup говорит о функции, которая была первоначально частью C с Классами, но это не часть современного C++ (стандартный C++). Функцию называют call/return
. Это - пример:
class myclass
{
call() { /* do something before each call to a function. */ }
return() { /* do something else after each call to a function. */ }
...
};
Я нахожу эту функцию очень интересной. Какой-либо современный язык имеет эту конкретную функцию?
Современным эквивалентом C++ будет объект sentry: постройте его в начале функции, а его конструктор реализует call()
, а при возврате (или ненормальном выходе) его деструктор реализует return()
.
Аспектно-ориентированное программирование имеет это. http://en.wikipedia.org/wiki/Aspect-oriated_programming
Аспектно-ориентированное программирование (также известное как АОП) имеет возможность создавать перехватчики до, после и вокруг кода.