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