提问人:Euphoria 提问时间:10/15/2020 最后编辑:Euphoria 更新时间:10/15/2020 访问量:64
当函数名称不带括号地发送到 cout 时,编译器如何确定在运行时输出什么值?C++ [复制]
How does the compiler determine what value to output during runtime when a function name is sent to cout without parenthesis? C++ [duplicate]
问:
#include <iostream>
int returnFive()
{
return 5;
}
int main()
{
std::cout << returnFive << '\n';
return 0;
}
由于这编译没有错误,系统如何确定实际发送和打印到控制台的值?
答:
1赞
Wander3r
10/15/2020
#1
想象一下,如果编写的代码是这样的
if(returnFive)
returnFive();
这里的期望是编译器检查函数指针是否是。returnFive
nullptr
此处的编译器将函数指针评估为布尔表达式,以显示它是否为 NULL,并打印输出。
https://godbolt.org/z/Psdc69。您可以检查是否正在传递 .cout
(bool)
评论
&returnFive