xml*_*lmx 5 c c++ pointers function memory-address
void f()
{}
void test()
{
auto fn_1 = f;
auto fn_2 = &f;
assert(fn_1 == fn_2); // OK
fn_1(); // OK
fn_2(); // OK
(*fn_1)(); // OK
(*fn_2)(); // OK
(**fn_1)(); // OK
(**fn_2)(); // OK
(***fn_1)(); // OK
(***fn_2)(); // OK
}
Run Code Online (Sandbox Code Playgroud)
这些行为是否由 C++ 标准明确定义?
是的,& 符号是可选的,它们产生相同的结果。
\n\n\n\n\n函数类型 T 的左值可以转换为指向 T 的指针 \xe2\x80\x9c 类型的纯右值。\xe2\x80\x9d 结果是指向函数的指针。55
\n
我只是想说,如果你使用 c++11,你应该使用它,std::function无论如何它更容易理解和使用。