【发布时间】:2021-12-24 12:16:43
【问题描述】:
我有一个结构
struct Stuff {
float something (int& prereq) {
float s = prereq+2;
return s;
}
double something_else(int& prereq_ref, float& thing_ref, float& s_ref ){
s2 = s + thing + h;
return s2;
}
};
然后我在我的主循环中运行一个调用
float thing = 4;
int prereq = 2;
int main() {
Stuff item;
double n = item.something_else(prereq, thing, item.something(prereq));
return 0;
}
main 中的调用没有运行,但是下面的行会运行
float s = item.something(prereq);
double n = item.something_else(prereq, thing, s);
我是否遗漏了一些明显的东西?我宁愿不要把内存浪费在看似不必要的浮点数上。
【问题讨论】:
-
我认为隐式转换会发生吗?试试
item.something_else(prereq, thing, (float) item.something(prereq)) -
something()按值返回float。something_else()通过引用接受float。为此,something_else()需要接受const引用(可以绑定临时值,例如函数的返回值)或something()需要返回对float的引用,该引用继续返回后存在。