【发布时间】:2011-08-04 20:06:41
【问题描述】:
我非常经常将指针作为函数参数传递给只读参数(例如结构等)。例如在这个构造函数中:
Chunk::Chunk(const string& text, COLOR * background, COLOR * foreground);
我以前更喜欢这种方式(不是 const 正确的),因为我认为它更容易阅读。 但是,我开始觉得这很脏,而是这样做:
Chunk::Chunk(const string& text, const COLOR * const background,
const COLOR * const foreground);
一开始可能很难理解,但直到你习惯它。我的问题:
为什么没有人做对? (我见过这样的小代码) 编译更好/更小/更快?
我确实知道有什么区别,但我真的不在乎不同的语义,因为任何阅读代码的人都可以看到 args 是只读的。 (谁会改变指针地址?)
我确实知道我可以使用引用来代替,但假设我不想(或者我使用纯 C 语言)。
【问题讨论】:
-
也许你应该写
const string& text,除非你需要一份副本 -
我不同意。与我一起工作的大多数人都对我们代码的成本正确性非常严格。
-
我不认为,这确实是一个技术问题,为什么有人会写出糟糕的代码
-
两个
const修饰符做不同的事情;第一个限制函数修改对象,而第二个限制函数修改其主体内的参数。 -
const 正确代码不会比非 const 正确代码编译显着更好/更快。许多人无法编写 const 正确的代码,因为他们是懒惰、草率、过度自信的代码猴子。也就是说,有可能走得太远,在没有真正帮助的地方使用“const”。
标签: c++ c const-correctness