【发布时间】:2014-03-14 05:23:06
【问题描述】:
什么时候使用函数引用比如
void (&fr)() = foo;
fr();
而不是函数指针如
void (*fp)() = &foo;
fp();
有没有函数指针不能做而函数引用可以做的事情?
【问题讨论】:
-
同样,对于非函数指针和引用可以说的也可以应用于函数指针和引用。不过可能会有一些例外。
标签: c++ function-pointers
什么时候使用函数引用比如
void (&fr)() = foo;
fr();
而不是函数指针如
void (*fp)() = &foo;
fp();
有没有函数指针不能做而函数引用可以做的事情?
【问题讨论】:
标签: c++ function-pointers
当你定义一个引用时:
void (&fr)() = foo;
fr();
它使您几乎可以在任何可以使用foo 的地方使用fr,这就是为什么:
fr();
(*fr)();
工作方式与直接使用foo 完全相同:
foo();
(*foo)();
另一个区别是取消引用函数引用不会导致函数指针不需要取消引用的错误。
【讨论】:
fr 被声明为void (*fr)() = &foo,那么写fr() 的可能性仍然相同。两者都可以在有或没有显式取消引用的情况下编写。因此,您通过指出它们相同的方式回答了一个关于函数引用和函数指针之间区别的问题......