[英]pointer to the function in C++,are (*pf)() and pf same?
我是 C++ 的初学者,我在理解函数指针时遇到问题:
main()
{
double pam(int);
double (*pf)(int);
pf = pam;
double x = pam(4);
double y = (*pf)(5);
double y = pf(5);
}
(*pf)()
和pf()
怎么可能相同,其中pf
是指向 function 的指针?
其他指针和指向 function 的指针有什么区别??
*pf() 和 pf() 如何在 pf 是指向 function 的指针的情况下相同?
它们不一样(因为运算符优先级)。 如果您的意思是(*pf)()
和pf()
实际上是相同的,那是因为语言规则是这样说的。 具体来说,规则说:
[expr.call]
function 调用是一个后缀表达式,后跟括号,其中包含可能为空的逗号分隔的初始化子句列表,这些初始化子句构成 arguments 到 ZC1C425268E68385D14AB5074C17A9。 后缀表达式应具有 function 类型或 function 指针类型。 For a call to a non-member function or to a static member function, the postfix expression shall either be an lvalue that refers to a function (in which case the function-to-pointer standard conversion ([conv.func]) is suppressed在后缀表达式上),或具有 function 指针类型。
在(*pf)()
的情况下,表达式(*pf)
是指向 function 的左值,而在pf()
的情况下,表达式pf
具有 function 指针类型。 在这两种情况下,都会调用pf
指向的 function。
其他指针和指向 function 的指针有什么区别??
主要区别在于 function 指针指向函数,而指向对象的指针指向对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.