c++ - int foo(类型和栏);是不好的做法?

标签 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(类型和栏);是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2639199/

相关文章:

c++ - Qt5 C++ 应用程序因未知原因崩溃

javascript - 为函数内的 else 语句创建循环

r - 迭代数据框中的列,取平均值并将其与同一列中的每个值进行比较

.net - 从解决方案sln的所有csproj项目中阅读引用文献列表(以编程方式)

C++ const引用参数优化

c++ - 在模板类中实例化嵌套模板函数

c++ - boost::interprocess 互斥量并检查是否被遗弃

javascript - 如何获得返回 onclick 函数结果的函数?

java - 将对象的所有引用设置为空

c++ - 在qt中从https读取Json