我正在学习关于 const限定符和Stanley B. Lippman的C ++ Primer一书,但是当我读到顶级和低级别的内容时,我在它包含指针的部分感到困惑。
例如:
在代码的这一部分
const int ci = 42; //ok
const int *p2 = &ci; //ok
const int *const p3 = p2; //ok
int *p = p3; //error
p2 = p3; //ok
我知道p3
同时具有顶级和低级const,因为对象本身是const而指针可以指向const对象。
我无法正确理解为什么忽略顶级竞争以及为什么我可以将p3
分配给p2
,但我无法使用p3
来初始化{{ 1}}。任何人都可以通过更多细节向我解释其发生的原因吗?
PS:我已经看到了What are top-level const qualifiers?个问题,但它对我帮助不大。