Функция Call / Return классического C ++ (C с классами), какие современные языки есть? - PullRequest
10 голосов
/ 22 апреля 2010

На странице 57 из Проектирование и развитие C ++ доктор Страуструп рассказывает о функции, которая изначально была частью 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. */ }
  ...
};

Я считаю эту функцию очень интересной. Есть ли у какого-нибудь современного языка эта особенность?

Ответы [ 3 ]

7 голосов
/ 22 апреля 2010

Современный эквивалент C ++ был бы часовым объектом: создайте его в начале функции, с ее конструктором, реализующим call(), а после возврата (или аварийного выхода) его деструктор реализует return().

2 голосов
/ 22 апреля 2010

Аспектно-ориентированное программирование имеет это.http://en.wikipedia.org/wiki/Aspect-oriented_programming

Аспектно-ориентированное программирование (также известное как AOP) имеет возможность создавать перехватчики до, после и вокруг кода.

0 голосов
/ 26 апреля 2012

Язык программирования D2 имеет это и многое другое с ScopeGuards . Он спроектирован так, что вы можете использовать несколько из них, они работают как стек FILO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...