为什么我不能使用顶级和低级对象初始化另一个顶级?

时间:2015-08-25 18:29:56

标签: c++ c++11 const

我正在学习关于 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?个问题,但它对我帮助不大。

0 个答案:

没有答案