c++ - 异常代码的解释需要

标签 c++ syntax

你能解释一下它为什么有效以及为什么它为我返回 1 吗? a是什么类型?是函数吗?

#include <iostream>

class Foo
{
};

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

最佳答案

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

std::cout << a;

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

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

关于c++ - 异常代码的解释需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490064/

相关文章:

c++ - partial_sort 的中间迭代器可以等于结束迭代器吗?

c++ - DeferWindowPos 奇怪的行为

php - OpenCart中MySQL查询代码语法错误

python - 为什么需要用括号括起一个整数来调用它的方法?

c++ - 检查点是否在 vector 内

c++ - 在 Qt 中将 QString 转换为 Ascii 值,反之亦然

c++ - 用什么来替换 std::u16string 的 std::stringstream 和 boost::format ?

oop - 用于将自定义对象作为参数传递的 OCaml 语法

Python - 新的初学者问题,示例文件中的语法无效

javascript - Javascript 如何知道作为函数参数传递的变量是 "event"