你能解释一下它为什么会起作用以及为什么它会为我返回1。 什么类型的?它有用吗?
#include <iostream>
class Foo
{
};
int main ()
{
Foo a(int x) ;
std::cout << a;
}
答案 0 :(得分:11)
是的,这是一个功能。在表达式
中std::cout << a;
函数a
被转换为函数指针,类型为Foo (*)(int)
。然后函数指针转换为bool
,因为operator<<
重载bool
是唯一可行的。由于它不为null,因此结果为true
,打印为1。
(注意,与对象指针不同,函数指针不能隐式转换为void*
。)