2

最近、次のようなことができることに気づきました

void foo(){ }
//...
std::cout<<foo<<std::endl;

これは、渡された関数に関係なく、「1」を出力する傾向があります。

今、私は興味があります: これは正確に何をしているのですか?

4

1 に答える 1

5

fooは関数ポインタに減衰し、ブール値はデフォルトで数値として出力されるため、値が true のブール値に変換されます (関数ポインタは null ではないため)。これは "1" として出力されます。

これを試して:

std::cout << std::boolalpha << foo << std::endl;
于 2013-07-10T13:54:02.163 に答える