c++ - const对象的地址,被解释为低级const

标签 c++ c++11 auto

在C++ Primer(第5版)中,我找到了一个对我来说没有多大意义的示例:

const int i = /*some integer literal*/;

auto e = &i; 
对我来说&i代表const int i的地址-因此该地址本身不是(低/高级别)const,因此e应该解释为int *
但是这本书将e解释为 const int *说明(const对象的&为低级const)的原因-有人可以澄清我的理解有什么问题。

最佳答案

您使用auto为e分配了一个地址,因此e是一个指针。
const适用于int,e指向const int,但e不是const指针。
如果e是不是const指针,则e是顶级const,而e是非const指针(即,您可以将其他地址分配给e),它指向const int。
因此e是一个低级const

int i = /*some integer literal*/;

const auto e = &i; 
现在,e是指向非const int的const指针。由于对象本身e是const,因此这是顶级const

关于c++ - const对象的地址,被解释为低级const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62858483/

相关文章:

c++ - 在类外调用的私有(private)函数成员

"Android auto"应用程序中未显示 Android 汽车音乐应用程序

c++ - C++11 "auto"关键字是否检索到 "cv-qualifier"?我有冲突样本

c++ - C++中的命名空间有效性

c++ - auto之前的概念连词?

c++ - 如何返回没有复制构造函数的对象

c++ - std::chrono::system_clock::now() 无自动

c++ - 如何在 C++ 中计算对象的哈希/校验和/指纹?

c++ - 一个全局对象是如何在它被声明为 const 之前构造的?

c++ - 多重继承指定所需的虚函数而不重新定义它