C++ 函数指针的计算结果为 1

c++ function pointer evaluates to 1

本文关键字:结果 计算 函数 指针 C++      更新时间:2023-10-16

我定义了一个指向函数的简单函数指针,当我尝试输出它时,它的计算结果为 1。幕后发生了什么?(我在Mac上,使用c ++ 11 g ++编译器编译(

#include <iostream>
int foo()
{
return 5;
}

int main(int argc, char const *argv[])
{
int (*fcptr)()  = foo;
std::cout<< fcptr;
return 0;
}

输出为 1。

没有需要std::ostream和函数指针的operator<<重载。但是,有一个需要std::ostream和一个bool,并且存在从函数指针到布尔值的隐式转换。

所以你的代码将函数指针转换为bool,如果它不是空指针,则定义为产生true;然后输出true,默认情况下定义为输出1。 您可以执行std::cout<< std::boolalpha << fcptr;以查看输出true