我做了一些自学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;
}
这导致了我的问题,什么时候需要返回,什么时候不需要,以及为什么?
答案 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
类型。