gpt4 book ai didi

C++11: "auto"关键字是否完全检索 cv 限定符?我有矛盾的样本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:24 26 4
gpt4 key购买 nike

我有如下程序:

struct A{ int i; };

int main()
{
const int i = 0;
auto ai = i;
ai = 2; // OK

const A buf[2];
for(auto& a : buf)
{
a.i = 1; // error!
}

std::cout << buf[0].i << buf[1].i << std::endl;
}

第一个auto ai = i;没有问题,好像auto没有检索c/v限定符,因为ai可以修改的但是 for 循环编译失败——错误:成员 A::i 在只读对象中的赋值

我知道 auto 不会检索 & 功能,我的问题是:auto 是否像我的情况一样检索 c/v 限定符?我的测试程序似乎给出了相互矛盾的提示。

最佳答案

你在这里复制 ai,而不是修改它:

const int i = 0;
auto ai = i;

上面的代码等价于:

const int i = 0;
int ai = i;

如果您尝试使用非const 引用,您将得到一个编译时错误:

const int i = 0;
auto& ai = i;
ai = 5; // Error: assignment of read-only reference 'ai'

根据 Pau Guillamon 的建议, 这是一个与上面的代码等效的片段:

const int i = 0;
const int& ai = i;
ai = 5;

有关 auto 说明符的更多详细信息 can be found on cppreference .

关于C++11: "auto"关键字是否完全检索 cv 限定符?我有矛盾的样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com