微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在阅读 The C++ Programming Language,4th Edition( Bjarne Stroustrup)约 references.

他有以下代码示例:

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

    v.push_back(d1);
}

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

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

error: assignment of read-only location

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

谢谢

解决方法

更新版本具有以下内容

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
}

所以它可能是为下一次打印而修复的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐