【发布时间】:2012-08-09 00:03:45
【问题描述】:
显然使用const 是一个好习惯,除非某些东西是可变的,但你能走多远?如果我有一个字符串数组,我的函数签名应该包括这个吗?
char const * const * const my_strings
我不会修改它无论如何,所以它是一个指向常量数组的第一个元素的常量指针,它指向常量字符数组的第一个元素。这很拗口,而且代码几乎不可读。这都是一个简单的数据结构,比如argv。
我觉得 const 应该是默认的,应该有一个 mutable 关键字。
您通常只是那些consts 中的一个吗? 如果您仍然可以通过或多或少地取消引用来轻松更改它,那又有什么意义呢?
【问题讨论】:
-
关于您问题的后半部分,请参阅comp.lang.c FAQ 11.10
-
@JohnBartholomew:谢谢。我没有意识到我可以简单地投射以使消息消失。
-
是的,
const应该是默认的。我相信 Bjarne Stroustup 也说过同样的话,但他必须保持与 C 的向后兼容性。已经有一个关键字mutable。
标签: c constants const-correctness mutability