C++ 下面的函数指针多个解引用是如何编译的?
我知道使用函数指针,您可以使用C++ 下面的函数指针多个解引用是如何编译的?,c++,compilation,function-pointers,dereference,C++,Compilation,Function Pointers,Dereference,我知道使用函数指针,您可以使用 (*fptr)(); //or fptr(); 但是编译器如何实现这一点呢?他们是否完全忽略了引用标记,或者这里是否涉及更多内容 考虑这个有效的C++代码: void f1() { std::cout << "hi\n"; } int main() { auto f = f1; (********************f1)(); (*(*(*f1)))(); *************
(*fptr)();
//or
fptr();
但是编译器如何实现这一点呢?他们是否完全忽略了引用标记,或者这里是否涉及更多内容
考虑这个有效的C++代码:
void f1() { std::cout << "hi\n"; }
int main() {
auto f = f1;
(********************f1)();
(*(*(*f1)))();
***************f1;
}
可能重复。请考虑int:
+++++42
上的一元+运算符。我们只应用操作符(它确实会衰减到函数引用的指针)。
auto pf1 = f1; // ok
auto pf2 = &f1; // ok
// auto pf3 = &(&(f1)); // does not compile