当需要返回时,C ++中不需要返回

时间:2013-05-23 06:17:54

标签: c++ return

我做了一些自学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;
}

这导致了我的问题,什么时候需要返回,什么时候不需要,以及为什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

如果您的函数被声明为void,则返回不能返回值。

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

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