son*_*yao 11 c++ function-pointers
何时使用功能参考如
void (&fr)() = foo;
fr();
Run Code Online (Sandbox Code Playgroud)
而不是诸如的函数指针
void (*fp)() = &foo;
fp();
Run Code Online (Sandbox Code Playgroud)
有什么功能指针不能做但函数引用可以吗?
当您定义引用时:
void (&fr)() = foo;
fr();
Run Code Online (Sandbox Code Playgroud)
它使您能够fr在几乎所有可以使用的地方使用foo,这就是原因:
fr();
(*fr)();
Run Code Online (Sandbox Code Playgroud)
工作方式与直接使用完全相同foo:
foo();
(*foo)();
Run Code Online (Sandbox Code Playgroud)
另一个区别是,取消引用函数引用不会导致错误,而函数指针不需要取消引用。