函数声明中的Const最佳实践

const best practice in function declaration

本文关键字:最佳 Const 声明 函数      更新时间:2023-10-16

我搜索了存档的帖子,但没有找到任何类似的内容。

只是一个简单的问题:声明像

这样的检查函数的最佳实践是什么
int foo(int a) const { return a+1; }

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

假设你在谈论成员函数(非成员函数永远不能是const),你应该总是写const-correct代码,这意味着每个不修改对象可见状态的函数都应该是const

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

附加在函数声明和定义末尾的const表示函数调用者和函数之间的协议,该函数不会修改该类的任何成员。

所以如果你的函数提供了这样一个常量正确性契约的保证,你应该把它扩展到你的函数的用户。

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

一旦您开始将实例声明为const

Const正确性就有一种方式在整个程序中传播。随着程序复杂性和const使用的增加,您可能会:

  • 在使用const对象时遇到许多编译器错误,如果你现在不添加它们
  • 或者你的程序将构建没有(或更少)错误一旦你喜欢在适当的地方使用const
  • 或者你可能会在一段时间内避免const -如果你想改进你的设计,这是(IMO)不是一条好的道路。

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