Call/Return feature of classic C++(C with Classes), what modern languages have it?

自古美人都是妖i 提交于 2019-12-10 02:44:51

问题


On page 57 of The Design and Evolution of C++, Dr. Stroustrup talks about a feature that was initially part of C with Classes, but it isn't part of modern C++(standard C++). The feature is called call/return. This is an example:

class myclass
{
  call() { /* do something before each call to a function. */ }
  return() { /* do something else after each call to a function. */ }
  ...
};

I find this feature very interesting. Does any modern language have this particular feature?


回答1:


The modern C++ equivalent would be a sentry object: construct it at the beginning of a function, with its constructor implementing call(), and upon return (or abnormal exit), its destructor implements return().




回答2:


Aspect Oriented Programming has this. http://en.wikipedia.org/wiki/Aspect-oriented_programming

Aspect Oriented Programming (also known as AOP) has the ability to create interceptors before, after and around code.




回答3:


The D2 programming language has this and more with it's ScopeGuards. It's designed so you can use multiple ones, they work like a FILO stack.



来源:https://stackoverflow.com/questions/2688043/call-return-feature-of-classic-cc-with-classes-what-modern-languages-have-i

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!