const参数存储在哪里(C ++)?

时间:2018-10-10 07:22:05

标签: c++ function reference

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;
}

1 个答案:

答案 0 :(得分:1)

令人鼓舞的是,对于初学者来说,这是一个棘手的问题。首先请注意,就语言规范而言,内存部分并没有真正意义上的相关性,这是编译器可以自行选择的。

1的参数(2midpoint(1, 2);)是文字。允许将它们 bind (非正式地说,匹配)到const引用,但 not 引用。因此

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

可以用文字来调用,但是

double midpoint(double &a, double &b)

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

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

double midpoint(double a, double b)