たとえば、単一のブール型パラメータを取る単純なミューテーターを想像してください。
void SetValue(const bool b) { my_val_ = b; }
それはconst
実際に何らかの影響があるのでしょうか? 個人的には、パラメータを含めて広範囲に使用することを選択しますが、この場合、何か違いがあるかどうか疑問です。
const
また、関数宣言ではパラメータを省略できるが、関数定義ではパラメータを含めることができることにも驚きました。例:
.h ファイル
void func(int n, long l);
.cpp ファイル
void func(const int n, const long l) { /* ... */ }
これには何か理由があるのでしょうか?私には少し異常に思えます。
ベストアンサー1
const
引数が値渡しされる場合は、呼び出し元のオブジェクトを変更しないため、意味がありません。
間違っている。
それは、コードと仮定を自己文書化することです。
コードに多くの人が取り組んでいて、関数が重要でない場合は、const
できる限りすべてにマークを付ける必要があります。業務用のコードを書くときは、同僚がサイコパスであり、あらゆる手段を使ってあなたを陥れようとしていると常に想定する必要があります (特に、将来的にそれがあなた自身である場合が多いため)。
さらに、誰かが以前に言っていたように、コンパイラが少し最適化するのに役立つかもしれません(ただし、可能性は低いです)。