函数调用后不需要的额外传递引用参数的 C++ 模式?

标签 c++ design-patterns pass-by-reference

在 C++ 中定义一次性变量以传递给通过引用获取参数的函数是否有首选模式?一个例子是使用 openCV 的 minmaxLoc 函数:

void minMaxLoc(const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat())

该函数根据最小/最大强度值和位置更改 minVal、maxVal、minLoc、maxLoc 的值。

我可以为所有参数声明虚拟变量,但我实际上只需要 maxLoc。是否有一个首选的 C++ 模式,这样我只声明 maxLoc,而不用我为调用 minMaxLoc() 而定义的额外变量声明使我的代码困惑?

最佳答案

在这种特定情况下,您可以为不需要其结果的任何输出参数传递 nullptr。参见 the OpenCV documentation (阅读文档总是好的)。

如果参数不是可选的,则需要声明局部变量并传递它们的地址。如果您不希望这让您的代码变得困惑,请编写一个辅助函数来封装困惑。

关于函数调用后不需要的额外传递引用参数的 C++ 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572810/

相关文章:

c++ - 在STL vector 中存储矩阵信息。 vector 或 vector 的 vector 哪个更好?

c# - 以下场景应遵循的设计模式

c# - 继承设计模式

Java是按值传递吗?

java - 为什么设置ArrayList时不需要返回值?

c++ - 将 QPainter 与 QCoreApplication 一起使用

c++ - 如何在 Xcode 中包含 C++ 库

c++ - 错误 : C2248: 'QGraphicsItem::QGraphicsItem' : cannot access private member declared in class 'QGraphicsItem'

c++ - 为使用对象聚合的程序设计通信系统

c++ - 如何在我的实际参数中通过引用传递数组