C++ 理解常量自动指针

C++ 理解常量自动指针,c++,c++11,C++,C++11,考虑: int main() { int * i0 = new int; *i0 = 666; // OK const int * i1 = new int; *i1 = 666; // FAIL due to const auto i2 = new int; *i2 = 666; // OK const auto i3 = new int; *i3 = 666; // OK, WHY? const auto * i

考虑:

int main()
{
    int * i0 = new int;
    *i0 = 666; // OK

    const int * i1 = new int;
    *i1 = 666; // FAIL due to const

    auto i2 = new int;
    *i2 = 666; // OK

    const auto i3 = new int;
    *i3 = 666; // OK, WHY?

    const auto * i4 = new int;
    *i4 = 666; // FAIL due to const

    return 0;
}
案例13为什么有效?我一直认为在这种情况下,
const auto
会隐式地
const int*
,但我想不是这样的吧

const auto i3 = new int;
执行此操作时,
const
将应用于指针,而不是它所指向的对象

这相当于:

int* const i3 = new int;
也就是说

i3 = new int(20);
不起作用,但

*i3 = 666;

将起作用。

好的,所以这里是
int*const
。对。@juzzlin,没错。可以安全地说这类似于执行
typedef int*point;常数点ptr=新整数*ptr=666
?@scohe001,是。那很贴切。