异常代码的解释需要
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
,因为采用 bool
的 operator<<
重载是唯一可行的。由于它不为空,因此结果为 true
,打印为 1.
(请注意,函数指针不能隐式转换为 void*
,与对象指针不同。)
能否请您解释一下它为什么有效以及为什么对我来说 returns1。 a是什么类型?有功能吗?
#include <iostream>
class Foo
{
};
int main ()
{
Foo a(int x) ;
std::cout << a;
}
是的,这是一个函数。在表达式中
std::cout << a;
函数a
被转换为函数指针,类型Foo (*)(int)
。然后函数指针被转换为 bool
,因为采用 bool
的 operator<<
重载是唯一可行的。由于它不为空,因此结果为 true
,打印为 1.
(请注意,函数指针不能隐式转换为 void*
,与对象指针不同。)