【发布时间】:2021-11-07 21:22:52
【问题描述】:
我有以下函数来计算 c++ 中 double[] 的平均值:
double& Vector::mean() {
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += *(arr + i);
}
double m = sum / size;
return m;
}
这会编译并运行,但不会:
double& Vector::mean() {
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += *(arr + i);
}
return (sum / size);
}
出现以下错误:
Non-const lvalue reference to type 'double' cannot bind to a temporary of type 'double'
这是在 arr 的类型为 double* 的类中实现的。
简单地返回 sum / size 和返回变量 double m = sum / size 有什么区别?我有一个模糊的想法,原因与double 和double& 类型之间的差异有关,但是返回m 与返回计算的双精度值不一样吗?任何帮助表示赞赏。
【问题讨论】:
-
即使第一个似乎有效,它也是错误的。删除 &。
-
是的,永远不会返回对局部变量的引用,引用“指向”的值将在调用后消失。
标签: c++ function pointers types reference