当一个函数名被发送到不带括号的 cout 时,编译器如何确定在运行时输出什么值? C++
How does the compiler determine what value to output during runtime when a function name is sent to cout without parenthesis? C++
#include <iostream>
int returnFive()
{
return 5;
}
int main()
{
std::cout << returnFive << '\n';
return 0;
}
由于编译没有错误,系统如何确定实际发送并打印到控制台的值?
想象一下,如果编写的代码是这样的
if(returnFive)
returnFive();
这里期望编译器检查 returnFive
的函数指针是否为 nullptr
。
这里的编译器将函数指针作为布尔表达式求值,判断它是否为 NULL 并打印输出。
https://godbolt.org/z/Psdc69。您可以检查 cout
是否被传递给 (bool)
.
#include <iostream>
int returnFive()
{
return 5;
}
int main()
{
std::cout << returnFive << '\n';
return 0;
}
由于编译没有错误,系统如何确定实际发送并打印到控制台的值?
想象一下,如果编写的代码是这样的
if(returnFive)
returnFive();
这里期望编译器检查 returnFive
的函数指针是否为 nullptr
。
这里的编译器将函数指针作为布尔表达式求值,判断它是否为 NULL 并打印输出。
https://godbolt.org/z/Psdc69。您可以检查 cout
是否被传递给 (bool)
.