我搜索了存档的帖子,但我找不到类似的东西。
只是一个简单的问题:在声明检查函数时最好的做法是什么:
int foo(int a) const { return a+1; }
我指的是const关键字,你通常在检查函数的末尾声明它吗?我只是问,因为我通常这样做,即使99%我不会宣布任何常规课程。我只是继续告诉自己,如果我需要的话,它可以节省我一些时间,但我想知道是否有其他人真正关心声明const函数或者我只是偏执于类型安全代码
答案 0 :(得分:6)
假设您正在讨论成员函数(非成员函数不能const
),您应该始终编写 const-correct 代码,这意味着每个函数都是不修改对象的可见状态应为const
。
即使您没有创建该类型的常量对象,在许多情况下,您将通过const引用将对象传递给函数,在这种情况下,只能调用const
个成员函数。 object(顺便提一下,这意味着你应该通过常量引用传递对象,而不需要改变接收对象状态的任何函数)
答案 1 :(得分:1)
是的,当然,如果您希望程序支持const正确性,那么您应该这样做。
一旦开始将实例声明为const
,const正确性就有一种在程序中传播的方法。随着程序复杂性和const
的使用增加,您将:
const
,您的程序将会在没有(或更少)错误的情况下构建。const
- 如果你想改善你的设计,那么(IMO)不是一条好路。随着时间的推移,我们中的许多人已经学会在超过1%的代码中使用const
。
答案 2 :(得分:1)
函数声明和定义末尾附加的const
表示函数调用者与函数不修改该类任何成员的函数之间的契约。
因此,如果您的函数为此类const-correctness契约提供保证,则应将其扩展为函数的用户。