解释需要不寻常的代码

Mic*_*cki 3 c++ syntax

你能解释一下它为什么会起作用以及为什么它会为我返回1.什么类型的?它有用吗?

#include <iostream>

class Foo
{
};

int main ()
{
    Foo a(int x) ;
    std::cout << a;
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 11

是的,这是一个功能.在表达中

std::cout << a;
Run Code Online (Sandbox Code Playgroud)

该函数a转换为函数指针,类型Foo (*)(int).然后将函数指针转换为bool,因为operator<<重载bool是唯一可行的.由于它不是null,结果是true,打印为1.

(注意void*,与对象指针不同,函数指针不能隐式转换为.)