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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 00:14:11977ブラウズ

Why Can't Non-Const Lvalue References Bind to Dissimilar Types in C  ?

異なる型への非 const lvalue 参照のバインド

C では、非 const lvalue 参照は同じ lvalue にバインドする必要がありますタイプ。次の例に示すように、一時オブジェクトを非 const 参照にバインドしようとする場合、これは混乱を招く可能性があります。

int a;
const double &m = a; // This is allowed
double &m = a; // This produces an error

エラー「タイプ 'double' への非 const 左辺値参照はバインドできません」関連のない型 'int' の値にバインドできないことは、非 const 型の参照が別の型のオブジェクトにバインドできないことを示します。

この制限の理由は次のとおりです。一時オブジェクトを非定数参照にバインドすることはできません。 a が double に変換されると、一時オブジェクトが作成されます。その結果、次のコード行:

double &m = a;

非 const 参照を一時オブジェクトにバインドしようとしますが、これは許可されていません。

ただし、次の例外があります。 Visual Studio では、このルールが適用されます。このルールでは、コンパイラ拡張機能により、非 const 参照を一時オブジェクトにバインドできます。ただし、この動作は標準ではないため、GCC などの他のコンパイラではエラーが発生します。

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

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