関数パラメータにconstを使用すると何か効果がありますか?関数シグネチャに影響しないのはなぜですか?質問する

関数パラメータにconstを使用すると何か効果がありますか?関数シグネチャに影響しないのはなぜですか?質問する

たとえば、単一のブール型パラメータを取る単純なミューテーターを想像してください。

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できる限りすべてにマークを付ける必要があります。業務用のコードを書くときは、同僚がサイコパスであり、あらゆる手段を使ってあなたを陥れようとしていると常に想定する必要があります (特に、将来的にそれがあなた自身である場合が多いため)。

さらに、誰かが以前に言っていたように、コンパイラが少し最適化するのに役立つかもしれません(ただし、可能性は低いです)。

おすすめ記事