异常代码的解释需要

Explanation need for unusual piece of code

能否请您解释一下它为什么有效以及为什么对我来说 returns1。 a是什么类型?有功能吗?

#include <iostream>

class Foo
{
};

int main ()
{
    Foo a(int x) ;
    std::cout << a;
}

是的,这是一个函数。在表达式中

std::cout << a;

函数a被转换为函数指针,类型Foo (*)(int)。然后函数指针被转换为 bool,因为采用 booloperator<< 重载是唯一可行的。由于它不为空,因此结果为 true,打印为 1.

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