解释需要不寻常的代码

时间:2015-02-12 23:45:51

标签: c++ syntax

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

#include <iostream>

class Foo
{
};

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

1 个答案:

答案 0 :(得分:11)

是的,这是一个功能。在表达式

std::cout << a;

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

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