ホームページ > バックエンド開発 > C++ > C で一時オブジェクトを非 Const 参照に渡せないのはなぜですか?

C で一時オブジェクトを非 Const 参照に渡せないのはなぜですか?

Susan Sarandon
リリース: 2024-12-11 15:02:11
オリジナル
824 人が閲覧しました

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

C では、一時オブジェクトに const 参照のみが許可されるのはなぜですか?

C では、一時オブジェクトの割り当ては const 参照に対してのみ許可されます。 、一方、非 const 参照は禁止されています。この制約により、特に一時オブジェクトの変更の可能性に関して多くの疑問が生じています。

広く知られているように、一時オブジェクトは一時的なものであり、その作成を含むステートメントが終了するとすぐに消えます。これは正当な懸念を引き起こします: 読み取りが許可されているのに変更が制限されるのはなぜですか?

この矛盾を理解するために、関数パラメータに関係する仮説的な状況を考えてみましょう。

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
ログイン後にコピー

非 const 参照が一時パラメータを許可すると、このコードの動作は独特になります。 int 引数を参照渡ししたにもかかわらず、inc を呼び出した後も i の値は変化しません。これにより、予期しない非論理的な結果が発生します。

ただし、const 参照を許可すると、関数パラメータに渡される一時オブジェクトが誤って変更されることがなくなります。これにより、予期しない動作の可能性が防止され、const 参照を使用する意図が確実に維持されます。

以上がC で一時オブジェクトを非 Const 参照に渡せないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート