3

組み込み型の const 値を返すのは良い習慣ですか?

その理由は:

const int F()
{
}

int y;
F(x) = y;

戻り値が const の場合、上記のコードはコンパイルされません。ただし、そうでない場合F(x) = y;は、非常に隠れた間違いです。

関数に値を代入しても意味がないので、組み込み型は常に const 値を返すのが慣習でいいのかな?組み込み型に対して常に const 値を返す場合、何か問題はありますか?

4

2 に答える 2

5

constオブジェクトの存続期間中、オブジェクトの値は変更されないことを意味します。

標準自体は、したがって、const は非クラスまたは非配列の prvalues の prvalues では意味をなさないことに注意しています。そのような式はオブジェクトを参照することはありません (少なくとも式がユーザー コードに由来する場合。言語自体が参照バインディング中に一時オブジェクトを魔法のように参照する prvalues を作成する場合があります。ただし、これらは代わりに xvalues にする必要があります)。したがって、オブジェクトがないので、寿命はありません。したがって、「一定」に保たれるものは何もありません。

于 2012-10-31T09:40:25.880 に答える
3

とにかく、このタイプの関数呼び出しへの代入は合法ではありません。g++ を試してみると、次のエラー メッセージが表示されます。

test.cpp: In function ‘int main()’:
test.cpp:8:8: error: lvalue required as left operand of assignment

constしたがって、コンパイラから適切な診断を取得するためだけに戻り値を宣言する必要はありません。

于 2012-10-31T01:55:33.020 に答える