Std :: cout函数作为参数

use*_*648 2 c++ cout

我最近注意到你可以做类似的事情

void foo(){ }
//...
std::cout<<foo<<std::endl;
Run Code Online (Sandbox Code Playgroud)

无论传递的函数如何,这都会打印出"1".

现在我很好奇:这究竟是做什么的?

Seb*_*edl 5

foo正在衰减为函数指针,然后将其转换为值为true的布尔值(因为函数指针不为空),打印为"1",因为默认情况下布尔值会打印为数字.

试试这个:

std::cout << std::boolalpha << foo << std::endl;
Run Code Online (Sandbox Code Playgroud)