【发布时间】:2016-09-24 20:57:17
【问题描述】:
我们需要 void 函数有什么深奥的原因吗?
出于同样的原因int main() 是一个标准,为什么不简单地从不需要返回值的函数中返回0?我看到使用 int 类型的三个直接优势:
1.我们可以返回一个代码来表示函数状态;通常,如果出现问题,我们可以返回非零错误代码。
2.我们可以在调试的时候输出函数的返回值
3. 这是 main() 例程的标准;即int main() {}。为什么不跟风?
有什么理由让我们更喜欢void 而不是int?
示例:对奶酪数组进行排序并通过引用返回的函数。
#include <iostream>
#include <string.h>
int sortArrayInt(string & _cheese[]) { // pun intended ;D
int errCode = 0;
try {
// ..sort cheese[] array
} catch(e) {
errCode = 1;
}
return errCode;
}
void sortArrayVoid(string & _cheese[]) {
// .. sort cheese[] array
// no return code to work with, doesn't follow int main() standard, and nothing to output.
}
int main() {
string cheese[5] = {"colby","swiss","cheddar","gouda","brie"};
std::cout << "Sort Status: " << sortCheeseArrayInt(cheese) << std::endl;
sortArrayVoid(cheese);
// ..print cheese array
}
OUTPUT:
Sort Status: 0
brie, cheddar, colby, gouda, swiss
【问题讨论】:
-
从纯粹的技术方面来看,我认为您不必具有 void 功能。从编程的角度来看,如果函数不需要发出任何信号,为什么要返回一些东西?
-
所以...您建议 some 函数返回一个有意义的值,而 some 返回一个 maybe有意义的结果代码可能根本没有意义,但必须总是返回?听起来很糟糕。
-
我很确定大多数情况下都存在异常,因为返回错误代码很不方便。每个与我交谈过的关于异常的程序员都会接受异常而不是返回码。对于您的奶酪示例...您可以从 void 函数输出一些内容...您可以输出它排序的奶酪。无论如何,这才是它创造的真正价值。
-
有人能解释一下为什么这个问题会得到如此多的反对吗?不管你是否同意他的观点,这对我来说都是一个不错的问题。
-
@Hill,我没有投反对票,但这个问题对很多人来说并没有多大意义。