C++函数指针的计算结果为1
我定义了一个指向函数的简单函数指针,当我尝试输出它时,计算结果为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输出。
相关文章