相关疑难解决方法(0)

如何用cout打印函数指针?

我想用cout打印出一个函数指针,发现它不起作用.但是在将函数指针转换为(void*)之后它才起作用,printf与%p一样,例如

#include <iostream>
using namespace std;

int foo() {return 0;}

int main()
{
    int (*pf)();
    pf = foo;
    cout << "cout << pf is " << pf << endl;
    cout << "cout << (void *)pf is " << (void *)pf << endl;
    printf("printf(\"%%p\", pf) is %p\n", pf);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用g ++编译它并获得如下结果:

cout << pf是1
cout <<(void*)pf是0x100000b0c
printf("%p",pf)是0x100000b0c

那么cout对int(*)()类型做了什么?我被告知函数指针被视为bool,是真的吗?cout用type(void*)做什么?

提前致谢.

编辑:无论如何,我们可以通过将函数指针转换为(void*)并使用cout将其打印出来来观察函数指针的内容.但它对成员函数指针不起作用,编译器抱怨非法转换.我知道成员函数指针是一个比简单指针更复杂的结构,但是我们如何才能观察成员函数指针的内容呢?

c++

49
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×1