1. ホーム
  2. c++

[解決済み] 値で渡す場合、"const "は冗長ではありませんか?重複

2023-03-02 01:08:48

質問

C++の本(Deitel)を読んでいたら、立方体の体積を計算する関数に出会いました。そのコードは以下のようなものです。

double cube (const double side){
    return side * side * side;
}

const修飾子を使用する説明はこのようなものでした: "const修飾子は最小特権の原則を強制するために使用されるべきで、関数が変数側を変更しないことをコンパイラに伝える"。

私の質問 変数が値で渡されるため、関数がそれを変更することはできないので、ここでは "const" の使用は冗長または不要ではありませんか?

どのように解決するのですか?

この const 修飾子は、関数内部のコードがパラメータ自体を変更することを防ぎます。関数が些細なサイズより大きい場合、このような保証があると、関数を素早く読んで理解するのに役立ちます。もしあなたが、その値が side の値が変化しないことが分かっていれば、読みながら時間をかけてその値を追跡することを心配する必要はない。状況によっては、これはコンパイラがより良いコードを生成するのに役立つかもしれません。

自明ではない数の人々が、一般的に良いスタイルであると考え、当然のようにこれを行います。