ホームページ >バックエンド開発 >C++ >C で非 Const 参照を異なる型の左辺値にバインドできないのはなぜですか?

C で非 Const 参照を異なる型の左辺値にバインドできないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-23 04:30:20754ブラウズ

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

異なる型の左辺値への非 const 参照のバインド

C では、非 const 左辺値参照 (&) をバインドすることはできません例で示すように、異なる型の左辺値以下:

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

これは、非定数参照 m が代入中に作成された一時オブジェクトにバインドしようとするためです。非 const 参照は一時変数にバインドできません。

ただし、次の例を考えてください。

const double &m = a; // Valid

この場合、const 参照 m は非 const 左辺値にバインドされており、 int から double への変換は許可されます。これは、const 参照によって基礎となる値が変更されないように保護され、非 const 参照を一時参照にバインドすることで発生する可能性のあるデータ破損の可能性が排除されるためです。

したがって、非 const 参照をバインドしようとすると、異なる型の左辺値を const 参照すると、非 const 参照を一時値にバインドできないため、エラーが発生します。

以上がC で非 Const 参照を異なる型の左辺値にバインドできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。