【发布时间】:2015-11-04 18:39:15
【问题描述】:
我知道这可能是一个微不足道的问题。声明后无法设置 const 指针的逻辑是什么?分配内存不会改变 const 所指的起始地址。那为什么不能这样……
int* const p;
p = new int [10];
...完成...这也禁止将 const 指针传递给函数?
【问题讨论】:
-
你不将
new调用返回的指针分配 到p吗?因此,显然您正在更改它指向的地址。我不明白您所说的“禁止将 const 指针传递给函数”是什么意思。 -
对。但是第一个值是未定义的。所以就好像指针没有一个重要的值。第一个计数的值是分配期间给出的值。所以我要问的是,ONE 赋值是在声明期间还是在后面的行完成,为什么重要?无论如何,只有一项正式任务。
-
@dspfnder C++ 没有默认初始化值是“计数”还是有效的概念。这就是 Clang 禁止在没有显式初始化的情况下创建
const值的原因。 -
@dspfnder: “ONE 赋值是在声明期间还是在后面的行完成有什么关系?” 因为那不是真的。 “声明期间的赋值”不是赋值。这是一个初始化。
-
@dspfnder 你有 Java 背景吗? C++ 中的
const指针不等同于 Java 中的final引用。
标签: c++ function pointers constants