ホームページ >バックエンド開発 >C++ >スタック上の Const 参照は C の一時オブジェクトの寿命をどのように延長しますか?

スタック上の Const 参照は C の一時オブジェクトの寿命をどのように延長しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 19:11:021054ブラウズ

How Do Const References on the Stack Extend the Lifetime of Temporary Objects in C  ?

一時オブジェクトを Const 参照にバインドする

C では、一時オブジェクトをスタック上の const への参照にバインドすると、その有効期間がそのまで延長されます。参照自体の。一時オブジェクトは通常、囲んでいる式の最後に期限切れになるというルールの例外により、一時オブジェクトをより柔軟に安全に処理できるようになります。

次のコードを検討してください。

<code class="cpp">string foo() {
  return string("123");
};

int main() {
  const string& val = foo();
  printf("%s\n", val.c_str());
  return 0;
}</code>

ここ、一時文字列オブジェクトが foo() 関数から返されます。通常、この一時的なものは、foo() を含む完全な式の終わりに存在しなくなります。ただし、定数参照 val にバインドすることにより、一時文字列の有効期間は閉じ中括弧まで延長されます。

通常の一時有効期間ルールからの逸脱により、ダングリング参照を回避する安全なコードが可能になります。上の例では、val にバインドされた一時文字列は、val が存在する限り存在することが保証されます。

このプロパティはスタック上の const への参照にのみ適用されることに注意してください。オブジェクトのメンバー変数によって参照される一時オブジェクトの有効期間は延長されません。

さらに詳しく理解するには、Herb Sutter の GotW #88: 「最も重要な const」の候補を参照してください。ここで入手できます。 https://www.gotw.ca/publications/mill19.htm.

以上がスタック上の Const 参照は C の一時オブジェクトの寿命をどのように延長しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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