在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/