我如何阅读here on SO:
在C++中:
... analysis requires inspection of the entire program, which is incompatible with separate compilation, and which is not even possible in the general case ...
从我在该页面上的几个答案得出的结论来看,检查函数中是否存在return语句非常困难,有时实际上是不可能的。这不是非空函数返回的结果,C++标准却未定义其行为。
但是,我听说在Java中,同一件事在编译时被报告为错误。
问:我的理解正确吗? Java如何达到相同的目的?
编辑:只是要清楚,我有兴趣了解:
最佳答案
Java通过拒绝运行某些程序来做到这一点,即使它们总是返回一个值。采取以下(愚蠢)方法
public boolean test() {
boolean var=true;
if(var)
return true;
}
该方法始终返回true,但是java仍将拒绝接受它为有效方法。 C++中的相同方法是合法的,因为它总是返回一个值。
综上所述:如果编译器无法证明它总是会返回一个值,则Java将拒绝您的方法。有时这会拒绝总是返回值的方法。
C++只相信程序员总是返回一个值,然后如果程序员未能返回某些内容,则会在运行时崩溃。