比较函数指针

  • 本文关键字:指针 函数 比较 c++
  • 更新时间 :
  • 英文 :


如何比较C++中的函数指针?稳定吗?

例如,像这样的东西是否有效:

if(pFnc == &myFnc){
//Do something
}

C++03 5.10/1 [expr.eq]:

==(等于)和 !=(不等于)运算符具有相同的 语义限制、转换和结果类型作为关系 运算符,但其较低的优先级和真值结果除外。 [注:a

函数指针本质上是一个内存地址,就像C++中的任何其他指针一样。因此,在比较指针时,您总是比较内存地址而不是值,这意味着只要两个指针的类型相同,这些指针指向什么并不重要。

必须

定义pFncmyFnc。正确的比较是:

if(pFnc == myFnc)
{
    //Do something
}