在c ++中声明变量常量有什么意义

时间:2011-06-17 22:22:36

标签: c++ variables const

  

可能重复:
  is const (c++) optional?

在c ++或任何编程语言中,声明变量const或常量有什么意义?我理解const的作用,但是声明一切不是常数并不安全,因为程序员不知道是否要更改变量吗?我只是没有看到const的目标。

7 个答案:

答案 0 :(得分:5)

如果程序员(或编程团队)能够成功地跟踪每个变量的每个细节而不是意外地为常量赋值,那么无论如何都不要声明常量const

在语言中添加const对于防止容易预防的错误非常有用,这与恐龙时代会发生邪恶事件的语言不同。

这是我曾经在一个巨大的FORTRAN 77应用程序中追踪的错误的近似值。 FORTRAN 77通过参考传递参数,除非采取特殊措施:

subroutine increment(i)
integer i

i = i + 1
end

subroutine process ()
call increment (1)
call someprocedure (1, 2, 3)
...

结果是someprocedure()被调用了(2,2,3)!

答案 1 :(得分:4)

  

但声明一切不是常数并不安全,因为程序员不知道是否要更改变量吗?

这是完全错误的。确保所谓的恒定值不会被错误地改变是“更安全的”。它向所有可能在将来偶然发现它的程序员传达了价值的意图。如果一个程序假定一个值永远不会改变那么为什么允许它?这可能会导致非常难以追踪错误。

不要假设您的程序是正确的,尽可能使用您的语言提供的实用程序(尽可能多)。大多数现实世界的项目都没有由坐在地下室的一个人完成。它们涉及多个程序员,并且通常由一组与初始版本无关的人员维护多年。

请不要让我或其他任何人猜测你的设计决定是什么,尽可能让它们明确。天哪,即使你回到一段时间没有碰过的程序,你也会忘记你在想什么。

答案 2 :(得分:1)

  

因为程序员不知道是否要更改变量吗?

没有。您将为其他程序员编写大量代码。他们可能想要改变这个价值。

也许,你犯了一个错误,你无意中改变了价值。如果它是常量,它就不会让你。 Const对于重载运算符也非常有用。

答案 3 :(得分:1)

是的,当你说基本思想是确保常量变量可以防止编程错误时,你是对的。但另外一个用途是,您提供给客户端的接口也确保您想要成为const的任何内容保持不变!它会阻止使用您的代码的人违反约束。

这将在OOP中派上用场。通过确保您的对象是const,您可以编写大量代码而无需担心后果。这些对象可以由新程序员或必须保留该属性的客户使用。 Const迭代器也非常方便。

This link should help you out

答案 4 :(得分:0)

const帮助编译器优化代码。 Temporaries绑定到const引用。因此,使用const可以增加临时工作的寿命。

答案 5 :(得分:0)

在网络编程中,可以通过注入改变(有时是恶意的)变量。

当您可能意外更改变量但提前知道不需要时,它也会有所帮助。

答案 6 :(得分:0)

在编写大型程序时,常量非常有用,在这些程序中,您可能会迷失并忘记变量(或常量)的作用,或者是否允许您更改它的值。

而且更重要的是,它在团队合作和为他人编写图书馆方面很重要。如果你为其他人编写代码,他们可能会改变你想要保持恒定值的变量,所以将它声明为常量非常有用。

当你想在只允许使用常量的地方使用相同的数字时,它也很有用,例如,删除静态数组。在这种情况下,您无法使用变量确定数组的大小,每次想要更改数组的大小时,查看所有代码并更改数字非常烦人,因此将该数字声明为常量非常有用,我真的很喜欢它。

希望这是令人信服的,这就是我现在所记得的,如果我还记得别的东西,我会回来编辑。

有一个很好的编程:)

相关问题