【发布时间】:2017-04-03 22:29:16
【问题描述】:
我想知道传递一个不能正常调用的函数的引用是否安全(以及为什么)。
换句话说,在 myFunct.cpp 文件中,我有这样的内容:
#include "externalStuff.h"
#include "myFunct.h" // myFunct_publicFunction proto
static void myFunct_foo(void);
static void myFunct_foo(void)
{
[...]
}
void myFunct_publicFunction()
{
externalStuffObj.init(myFunct_foo);
}
在 externalStuff 内部,引用以这种方式关联:
externalStuffClass::init(void (*function)(void))
{
externalStuffReference = function;
}
这段代码 sn-p 实际编译,当 externalStuffObj 以某种方式调用 myFunct_foo 的存储引用时,它会正确执行。 我认为在源文件中声明静态函数等同于在 C 中具有私有函数,因此不能被不包含在此类源文件中的函数使用。
我的问题是这是否安全,或者由于幸运因素而可以正常工作并且可能会弄乱指针。
【问题讨论】:
标签: c++ function class reference private