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

What is the point of declaring a variable constant in c++

本文关键字:常量 变量 什么 一个 c++ 声明      更新时间:2023-10-16

可能重复:
const(c++)是可选的吗?

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

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

在语言中添加const有助于防止容易预防的错误,而不像恐龙时代的语言那样会发生邪恶的事情。

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

subroutine increment(i)
integer i
i = i + 1
end
subroutine process ()
call increment (1)
call someprocedure (1, 2, 3)
...

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

但是,因为程序员不知道是否要更改变量,所以声明所有内容都不是常量不是更安全吗?

这完全是错误的。确保本应为常数值的值不会被错误地更改是"更安全的"。它向未来可能偶然发现它的所有程序员传达了价值的意图。如果一个程序假设一个值永远不应该改变,那么为什么允许它改变呢?这可能会导致很难追踪到错误。

不要想当然地认为你的程序是正确的,使用你的语言提供的实用程序(尽可能地)使它正确。大多数现实世界中的项目都不是由一个人坐在地下室里完成的。它们涉及多个程序员,将被维护多年,通常由一群与初始版本无关的人维护。

请不要让我或其他人猜测你的设计决定是什么,尽可能明确。见鬼,当你回到一个已经有一段时间没有接触过的程序时,即使你也会忘记你在想什么。

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

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

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

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

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

这个链接应该可以帮助您完成

const帮助编译器优化代码。Temporaries必然是const引用。因此,临时工的使用寿命可以使用const增加一点。

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

当您可能不小心更改了变量,但提前知道这是不希望的时,这也会有所帮助。

在编写大型程序时,常量很有用,因为您可能会迷失方向,忘记变量(或常量)的作用,或者是否允许更改其值。

此外,更重要的是,它在团队合作和为他人编写图书馆方面很重要。如果您为其他人编写代码,他们可能会更改您打算使用常数值保留的变量,因此将其声明为常量非常有用。

当您想在只允许使用常量的地方使用相同的数字时,这也很有用,例如,delcare静态数组。在这种情况下,你不能用变量来确定数组的大小,而且每次你想改变数组的大小时,都要查看所有代码并更改数字,这非常烦人,所以将数字声明为常数非常有用,我真的有过这样的经验。

希望这是令人信服的,这就是我现在所记得的,如果我还记得其他事情,我会回来编辑。

有一个很好的编程:)