【发布时间】:2011-02-17 14:46:54
【问题描述】:
我正在查看一些使用 Boost.Function 的代码,并且对如何编写代码以允许赋值为 NULL 有疑问。我试图追踪相应的 Boost 代码,但无法找到。基本上,是什么让这成为可能?
boost::function<void()> func;
func = NULL;
编辑:以下内容不适合我,那么他们如何防止这种情况呢?
func = 1;
【问题讨论】:
-
如果您的问题是关于底层实现,那么您需要记住
function是一个多态对象,它保持指向实际函数(对象)的指针。该指针自然可以为空。 -
@Gene,我想我的问题更具体地说是关于实现对 NULL 的赋值,而不是
boost::function背后的语义。不过你说的很有道理,谢谢。