【发布时间】:2012-06-05 23:57:05
【问题描述】:
C 或 C++ 中的关键字 const 有什么用处,因为它允许这样的事情?
void const_is_a_lie(const int* n)
{
*((int*) n) = 0;
}
int main()
{
int n = 1;
const_is_a_lie(&n);
printf("%d", n);
return 0;
}
输出:0
很明显const不能保证参数的不可修改性。
【问题讨论】:
-
请注意,虽然它适用于您的特定情况,但 放弃 const 有时是 未定义的行为
-
@K-ballo 我不明白为什么会有这么多好的答案——比如你的! - 作为评论…
-
cast一切皆有可能:) -
@K-ballo 是的,UB 来自作业。
-
这不是重复的。他问为什么要使用
const,如果你可以抛弃它,另一个问题是“我为什么要使用 const 而不是不改变东西”