c++ - 将函数输出直接传递给接受引用参数的函数?

标签 c++ parameters

这是我的第一篇文章,希望一切顺利。我已经尝试解决这个问题一段时间了,但同时只是寻找了一个中间变量。嗯,这就是我的意思:

//from a pre-built library
double getValue(int idx)
{ 
  //Returns some value from within a class 
}

//from a function I created
void setValue(double &input)
{
  //set some value here
}

我目前正在做我的程序如下:

double numberOne;
numberOne = getValue(0);
setValue(numberOne);

这有效并编译。但是我想做如下事情:

setValue(getValue(0));

但是我似乎无法正确处理(尝试了很多引用\取消引用的方法,但我只是在黑暗中拍摄)。 我想知道是否有可能这样做?此外,如果有可能这样做,以这种方式执行它而不是具有中间存储值(又名 numberOne)是否有任何速度\内存空间优势。 double 值类型确实不是问题,但是当它是一个占用空间更大的类时,出于速度/内存方面的考虑,我想尽可能减少内存使用量\深度复制。

附带说明一下,是否有任何书籍或在线资源可以帮助我通过其他提高速度/内存使用效率的方法来加速我的 C++ 程序。

非常感谢您提供的任何帮助。

最佳答案

改变这个:

void setValue(double &input)

void setValue(double input) 

毕竟,input 应该是真正的输入,所以 setValue() 应该这样对待它。如果您按值(value)传递,这里的性能不会更差。但是,对于大类,您可能希望将其更改为引用以避免 复制并实现更好 性能:

void setValue(const VeryBigClass & input) 

关于c++ - 将函数输出直接传递给接受引用参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117919/

相关文章:

java - 如何在 JUnit @Parameters 中将 null 作为参数传递?

scripting - 在批处理脚本中转义双引号

c# - .exe 窗口中的鼠标模拟

c++ - 使用gdb分析核心转储帧

c++ - 默认(可选)参数作为引用 c++

Swift:用 '!'定义函数参数有什么区别

c++运算符重载,析构函数被调用

c++ - 动态加载静态库?

c++ - Qt 在不触发 moveEvent 方法的情况下移动 QWidget?

Django,从request.GET中排除参数