【发布时间】:2012-10-25 04:10:23
【问题描述】:
//Example 1
const double pie = 3.14; //const object
const double *cptr = &pie; //pointer-to-const to const object
double *ptr = &pie; //ERROR - non-pointer-to-const to const object
//Example 2
double pie = 3.14; //non-const object
const double *cptr = &pie; //non-pointer-to-const to non-const object
double *ptr = &pie; //non-pointer-to-const to non-const object
最初我虽然允许指向非常量对象的常量指针,因为它只是意味着 指向 const 的指针不会改变非 const 对象。
但我只是读过 c++ 的书 允许指向非常量对象的常量指针的原因是因为没有 指向 const 的指针真正知道它指向的对象是否为 const 的方法, 所以它将它指向的对象视为 const 但是按照相同的逻辑,非指向 const 的指针会将 const 对象视为非 const 对象 但是编译器会在编译时抛出错误。
我错过了什么吗?
【问题讨论】:
-
const double *cptr不是 const 指针。 -
您是正确的,有一个指向非常量对象的“指向常量的指针”仅仅意味着该指针不能用于修改非常量对象。至于你问题的第二部分,我怀疑你误读了这本书(你听起来很困惑,很难理解你的意思:/)。
-
@Jesse Good 编辑了指向 const 指针的 const 指针
-
@Mankarse 我认为这本书让我感到困惑,而不是相反,哈哈
-
@kypronite:呵呵,你说得对(: