这个例子在Bjarne Stroustrup的C ++编程语言中如何工作?

时间:2016-04-17 15:13:22

标签: c++ reference const pass-by-reference

我正在阅读 The C++ Programming Language, 4th Edition Bjarne Stroustrup)关于

他有以下代码示例:

void f (const vector<double>& v){
    double d1 = v[1];
    v[2] = 7;

    v.push_back(d1);
} 

我的问题是:由于v作为const传递,我们如何在函数的第二和第三语句中更改v

我尝试编译代码但不起作用:

  

错误:分配只读位置

那我在这里错过了什么?我怀疑是Bjarne犯了一个错误:D

由于

1 个答案:

答案 0 :(得分:7)

更新版本具有以下内容:

void f(vector<double>& v)
{
    double d1 = v[1]; // copy the value of the double referred to by v.operator[](1) into d1
    v[2] = 7; // place 7 in the double referred to by the result of v.operator[](2)
    v.push_back(d1); // give push_back() a reference to d1 to wor k with
}

所以它可能已经修复了下一次打印。