将函数输出直接传递给接受引用形参的函数
Pass a function output straight to a function that accepts reference 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)。对于双精度值类型来说,这真的不是一个问题,但是当它是一个占用空间更大的类时,我希望尽可能地减少内存使用量深度复制速度内存考虑。
顺便说一句,是否有任何书籍或在线资源可以帮助我通过其他效率改进来加快我的c++程序,以加快内存使用。
提前感谢你可能提供的任何帮助。
修改如下:
void setValue(double &input)
void setValue(double input)
毕竟,input
应该是真正的输入,所以setValue()
应该这样处理。这里的性能是而不是,如果按值传递则更差。然而,对于大型类,您可能希望将其更改为引用,以避免复制并实现更好的性能:
void setValue(const VeryBigClass & input)
函数的返回值是临时的。有一条规则规定不能将临时对象绑定到非const引用,因为这会导致很多错误。
可以将临时变量绑定到const引用,如
SetValue(const double& value);
对于更大或更复杂的类型来说,这很好,但对于像double这样的基本类型,您也可以通过value
传递它。SetValue(double value);
你的setvalue:
void setValue(const double &input)
{
//set some value here
}
这样问题就解决了。
如果你的"double"足够大(这里它是无用的),获得引用是有好处的。这样,您将只复制您在setvalue()
中感兴趣的对象的一部分。
相关文章:
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 类 Referention 中C++回调函数引用非静态函数
- 使用函数引用指向节点的指针删除链表中的节点?
- 解释通过从函数引用返回数组的语法
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 使用默认构造函数引用成员变量初始化错误
- 无法调用函数引用 c++
- 使用 decltype(this) 获取函数引用
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 从内联函数引用文件静态变量
- Boost::将sigaction函数引用绑定到实例
- 一种比函数引用更有效的方法
- 奇怪的未定义函数引用,函数调用C++不存在
- 是否可以检测绑定成员函数引用的对象是否被删除或销毁
- 构造函数引用参数导致seg错误
- 是否可以使函数模板从函数引用中获取“decltype”
- 无法让 Lua 函数引用"self"
- 如何解析变量和函数引用(Linker & Compiler)?
- 从不同模块调用函数 - 引用错误
- 如何在主函数中连接到数据库,然后从其他函数引用它