繁体   English   中英

指向 C++ 中 function 的指针,(*pf)() 和 pf 是否相同?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM