C++函数指针的计算结果为1 [英] c++ function pointer evaluates to 1

查看:53
本文介绍了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输出。

这篇关于C++函数指针的计算结果为1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆