const函数声明中的最佳实践

时间:2011-11-11 10:42:55

标签: c++

我搜索了存档的帖子,但我找不到类似的东西。

只是一个简单的问题:在声明检查函数时最好的做法是什么:

int foo(int a) const { return a+1; }

我指的是const关键字,你通常在检查函数的末尾声明它吗?我只是问,因为我通常这样做,即使99%我不会宣布任何常规课程。我只是继续告诉自己,如果我需要的话,它可以节省我一些时间,但我想知道是否有其他人真正关心声明const函数或者我只是偏执于类型安全代码

3 个答案:

答案 0 :(得分:6)

假设您正在讨论成员函数(非成员函数不能const),您应该始终编写 const-correct 代码,这意味着每个函数都是不修改对象的可见状态应为const

即使您没有创建该类型的常量对象,在许多情况下,您将通过const引用将对象传递给函数,在这种情况下,只能调用const个成员函数。 object(顺便提一下,这意味着你应该通过常量引用传递对象,而不需要改变接收对象状态的任何函数)

答案 1 :(得分:1)

是的,当然,如果您希望程序支持const正确性,那么您应该这样做。

一旦开始将实例声明为const,const正确性就有一种在程序中传播的方法。随着程序复杂性和const的使用增加,您将:

  • 在使用const对象时遇到许多编译器错误,如果你现在不添加它们
  • 或者,如果您赞成在适当的位置使用const,您的程序将会在没有(或更少)错误的情况下构建。
  • 或者你最终可能会在一段时间内避免const - 如果你想改善你的设计,那么(IMO)不是一条好路。

随着时间的推移,我们中的许多人已经学会在超过1%的代码中使用const

答案 2 :(得分:1)

函数声明和定义末尾附加的const表示函数调用者与函数不修改该类任何成员的函数之间的契约。

因此,如果您的函数为此类const-correctness契约提供保证,则应将其扩展为函数的用户。