c++ function pointer evaluates to 1(C++函数指针的计算结果为1)
本文介绍了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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:C++函数指针的计算结果为1
猜你喜欢
- XML Schema 到 C++ 类 2022-01-01
- 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值 2021-01-01
- 如何提取 __VA_ARGS__? 2022-01-01
- 将函数的返回值分配给引用 C++? 2022-01-01
- OpenGL 对象的 RAII 包装器 2021-01-01
- 将 hdc 内容复制到位图 2022-09-04
- GDB 不显示函数名 2022-01-01
- 哪个更快:if (bool) 或 if(int)? 2022-01-01
- DoEvents 等效于 C++? 2021-01-01
- 使用 __stdcall & 调用 DLLVS2013 中的 GetProcAddress() 2021-01-01