-3
double midpoint(const double &a, const double &b){
    /*code*/ 
}
int main(){
    double x=midpoint(1,2);
    cout << x << endl;
}

现在在函数参数中,我使用引用调用。但是在通过引用调用原始变量时被修改。但是在这里,我使用函数参数作为数字本身。那么值存储在哪个内存空间中呢?

另外,请注意,在这种情况下,代码会给出错误(从 'int' 类型的右值对 'int&' 类型的非常量引用的初始化无效)

那么部件的具体功能是const什么?

double midpoint(double &a, double &b){
    /*code*/ 
}
int main(){
    double x=midpoint(1,2);
    cout << x << endl;
}
4

1 回答 1

1

光顾的是,对于初学者来说,这是语言的一个棘手的角落。首先请注意,内存部分并不真正相关,因为语言规范并没有真正谈论它 - 这是编译器可以为自己做出的选择。

的参数 (12)midpoint(1, 2);文字。这些被允许绑定(非正式地说,匹配)到const引用,但不是引用。因此

double midpoint(const double &a, const double &b)

可以用文字调用,但

double midpoint(double &a, double &b)

不能。更糟糕的是,一些编译器允许引用绑定作为语言扩展!

double最后,请注意,通过引用传递 a 并没有太多意义const(有时在调用站点防止类型转换可能很有用);只需按值传递它:

double midpoint(double a, double b)

于 2018-10-10T07:28:20.593 回答