gpt4 book ai didi

c++ - auto关键字和顶级,低级常量

转载 作者:行者123 更新时间:2023-11-30 01:43:17 24 4
gpt4 key购买 nike

在 C++ Primer 中,提到-auto 通常会忽略顶级常量。像往常一样,在初始化中,保留低级常量,例如当初始化是指向常量的指针时。

const int ci = i,&cr=ci; 

auto b=ci; //ok:b is an int (top level constants in ci is ignored)

auto d=&i; //d is an int* (& of a int object is int *)

auto e=&ci; // e is a const int *(& of a constant object is a low level constant)

现在,我的问题是:在第二条语句中,const 被忽略,b 的类型是 int。但是在最后的语句中,没有忽略ci的const,类型是const int *,而不是int *。为什么??

最佳答案

当您使用 auto b=ci; 时,您创建了 ci 的拷贝。因此 C++ 没有理由阻止您更改 b 的值。但是如果你使用auto e=&ci;,你会创建一个const int变量的指针cie 应该是指向常量值的指针,以防止您更改 ci 的值。

关于c++ - auto关键字和顶级,低级常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067484/

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