为什么编译器不将 return_nothing(return_nothing())
视为 return_nothing(); return_nothing();
因为return_nothing()
的返回类型是void
?
void return_nothing() {}
int main()
{
return_nothing(return_nothing()); // compile error
}
直播:Wanbox
最佳答案
因为您正在使用 C++ 进行编程,并且在 C++ 中不能使用返回 void 的函数,并且您的编译器是(至少是近似的)标准所描述的 C++ 语言。
在 C++ 中,没有 void
类型的值。 void
是没有值的类型。
将 void
传递给函数是非法的,因为函数需要值。
有一个小异常(exception):如果您有一个返回 void
的操作,则可以从另一个返回 void 的函数返回 ooeratio_returning_void();
。这样做是为了使一些模板元编程更容易。
“将返回 void 的函数传递给不需要参数的函数”的问题有时也是一个模板元编程问题,但这种情况要少得多。您通常只需使用一些样板文件就可以解决这个问题。
关于c++ - 为什么不能将 void 传递给没有参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929618/