如何用cout打印函數指針?我想使用cout打印一個函數指針,發現它不起作用。但是,在我將函數指針轉換為(void*)之后,帶有%p的printf也起了作用,例如#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;}我用g+編譯了它,得到了如下結果:cout<pf為1cout<(void*)pf為0x100000b0cprintf(“%p”,pf)為0x100000b0c。那么cout如何處理int(*)()類型呢?我被告知函數指針被視為bool,是真的嗎?cout對類型(void*)做什么?提前謝謝。編輯:無論如何,我們可以通過將函數指針轉換為(void*)并使用cout打印出來觀察函數指針的內容。但是它不適用于成員函數指針,編譯器抱怨非法轉換。我知道成員函數指針是一個非常復雜的結構,而不是簡單的指針,但是我們如何觀察成員函數指針的內容呢?
如何用cout打印函數指針?
慕桂英4014372
2019-07-03 10:13:53
