c++ - int foo(type&bar);是不好的做法吗?

原文 标签 c++ function reference

好吧,我们来了。我的 C++ 书对另一个建议的做法有意见。它说“返回值(非空)函数不应将引用类型作为参数。”所以基本上如果你要实现这样的功能:

int read_file(int& into){
   ...
}

并使用整数返回值作为某种错误指示符(忽略我们有异常的事实)那么该函数就会写得很糟糕,它实际上应该像
void read_file(int& into, int& error){

}

现在对我来说,第一个更清晰,更易于使用。如果您想忽略错误值,您可以轻松地做到这一点。但本书建议后者。请注意,本书并没有说返回值函数是不好的。而是说你应该只返回一个值或者你应该只使用引用。

你对此有何看法?我的书满是废话吗? (再次)

最佳答案

这个建议很愚蠢。直接返回值要小得多且更易于键入。

直接退货:

if (read_file(...)) {
    ... handle problem ...
}

间接返回:
int status;

read_file(..., status);
if (status) {
    ... handle problem ...
}

编辑:更大的问题是是否使用非 const引用参数。参数中出现副作用可能会令人惊讶。一个编码标准说引用参数应该是const和输出参数应该使用指针。这样读者就会得到一个 &在调用点大喊“这个参数发生了一些事情”。

关于c++ - int foo(type&bar);是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639199/

相关文章:

C++:通过隐式构造函数初始化 int 变量

python - 可以在定义中更改函数名称吗?

php - MySQL查询解析问题

c# - C#垃圾收集器,线程和编译器/抖动优化

c++ - 不为动态分配内存的类使用 "*"的逻辑

c++ - PostMessage无法在Winform应用程序中与分配的控制台一起使用

c++ - 如何在c++中对以下字符串序列进行排序?

javascript - Javascript如何传递多个参数

vb.net - 函数不会在所有代码路径上返回值。使用结果时,可能会在运行时发生空引用异常

c++ - 如何(优雅地)将任意数量的输入输出参数旋转到函数?