0

我在做一些自学 C++ 时做了一些实验,发现在从函数中删除 return 语句后,执行我编译的代码运行相同。这是一个小示例代码 - 如果我要删除该行

return numb;

代码就像它在那里一样运行

#include <iostream>
using namespace std;
class TheClass {
 public:
  int aNumber(int n) {
    numb = n;
    return numb;                                                                                              
  }
  void printOnScreen() {
    cout << numb << endl;
  }
 private:
  int numb;
};
int main() {
  TheClass exampleObject;
  exampleObject.aNumber(5);
  exampleObject.printOnScreen();
  return 0;
}

这引出了我的问题,什么时候需要退货,什么时候不需要,为什么?

4

2 回答 2

2

如果您将函数定义为返回值,则无论您是否指定一个值,都会始终返回一个值。但是,如果您省略该return语句,则返回的值将是随机的,因为它是用于返回值的寄存器中的任何内容。根据您调用函数的方式,如果您忽略该值,这可能不会导致任何问题,但这是不好的做法,因为您无法知道该值是否被忽略。如果不需要返回值,则将该函数声明为 void。

于 2013-05-23T06:25:38.410 回答
-1

Return 不能返回值,如果您的函数已声明,则不需要返回void

在所有其他情况下,return value;必须在场。一个例外是main函数声明为int main(...)(典型的变体包括int main(void), int main(int argc, char** argv))。在这种情况下return,可以省略并且到达函数执行流程的结尾等同于隐式return 0;。即使允许这样做main,大多数编译器仍然会发出警告。

但是,如果您的main函数被定义为void main(...)(这也是允许的),则不会出现此警告,这完全可以 - 再次因为它被声明为void类型。

于 2013-05-23T06:21:59.830 回答