【发布时间】:2013-06-30 17:23:05
【问题描述】:
为什么以下是非法的?
extern const int size = 1024;
int * const ptr = &size;
当然应该允许指向非 const 数据的指针指向一个 const int(而不是相反)?
这是来自 C++ Gotchas item #18
【问题讨论】:
-
"当然应该允许指向非 const 数据的指针指向 const int" 为什么?
-
使用指向非 const 事物的 const 指针,您可以更改事物。如果事物天生是 const,那就是未定义的行为。
-
“当然应该允许指向非 const 数据的指针指向一个 const int(而不是相反)?” ——你倒过来了。当然,应该允许指向 const 数据的指针指向非 const int,而且确实如此。
const是关于如何使用某些东西,而不是它是什么类型的东西。 -
由于您的帖子中有
extern,我建议您在 Stack Overflow 上搜索“[c] extern pointer”。 -
@ThomasMatthews extern 会影响答案吗?它在我看到的示例中,因此我将其包含在此处。