このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
const の戻り値によって不要なデータ コピーが生じることがあります
const の戻り値によって移動操作が禁止され、より高いパフォーマンスが必要なコピー操作が行われる場合がある
説明
この欠陥は、戻り値としての const
オブジェクトによって、移動操作が禁止され、より高いパフォーマンスが必要なコピー操作が行われる場合に発生します。
チェッカーは、任意の呼び出し元関数で移動操作が可能かどうかをチェックしません。チェッカーは、非トリビアルなコピー操作と移動操作でクラス型を使用する const
関数戻り値を強調表示するだけです。
リスク
関数戻り値に関連付けられたリソースが不要になり、呼び出し元の関数内のオブジェクトに移動できます。一般的に、移動操作の方がコピー操作よりコストがかからないため、コンパイラは、この状況では移動操作が使用されるようにします。const
オブジェクトを戻り値として使用する場合は、このコンパイラの最適化を明示的に回避します。
加えて、呼び出し元の関数は非 const
オブジェクトに戻り値を格納できます。戻り値の const
の特性によって、非 const
オブジェクトに対する操作が禁止されることはありません。
修正方法
関数戻り値から const
修飾子を削除します。
パフォーマンスの改善の程度は、使用しているコンパイラ、ライブラリ実装、環境によって異なる可能性があります。
例
結果情報
グループ: パフォーマンス |
言語: C++ |
既定値: オフ |
コマンド ライン構文: CONST_RETURN_VALUE |
影響度: Low |
バージョン履歴
R2020a で導入