【发布时间】:2025-11-03 00:55:02
【问题描述】:
“挂钩”是指非侵入式地覆盖函数行为的能力。一些例子:
- 在函数体之前和/或之后打印一条日志消息。
- 将函数体包装在 try catch 体中。
- 测量函数的持续时间
- 等等……
我在各种编程语言和库中看到了不同的实现:
- 面向方面的编程
- JavaScript 的第一类函数
- OOP 装饰器模式
- WinAPI 子类化
- 鲁比的
method_missing -
SWIG 的
%exception关键字旨在将所有函数包装在 try/catch 块中,可以(ab)用于挂钩目的
我的问题是:
- IMO 这是一个非常有用的功能,我想知道为什么它从未被实现为 C++ 语言功能。是否有任何原因阻止这成为可能?
- 有哪些推荐的技术或库可以在 C++ 程序中实现这一点?
【问题讨论】:
-
Raymond Chen 最近wrote 讲述了 Windows 是如何做到这一点的
-
关于有哪些推荐的技术或库可以在 C++ 程序中实现这一点?
-
这是一个有效的问题。请不要投票关闭它。
-
@6502:你显然很脱节。模板元编程在 2003 年是如此。lambda 表达式现在是世界上最伟大的事情。接受吧,伙计!
-
我知道,迟早会有一些,呃,不明智的灵魂,在 C++ 标签中获得合法的 34 票赞成,并且不假思索地出现 尽管这是一个完全合理的问题,尤其是在它被改变以适应批评者之后,但还是把失踪的最后一个关闭了! 叹息。 投票重新开放。
标签: c++