C 11 で「auto」が値と参照を推定するのはどのような場合ですか?

Patricia Arquette
リリース: 2024-11-03 08:40:03
オリジナル
754 人が閲覧しました

When Does

C 11 の "auto" セマンティクス

C 11 では、"auto" キーワードにより、コンパイラが a の型を自動的に推測できます。変数。この推論のルールを理解することは、「auto」の結果が値型になるか参照型になるかを判断する際に非常に重要です。

値と参照の型推論

プライマリ型推論を支配する原則は、「auto」の型は宣言方法によって決定されるということです。例:

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
ログイン後にコピー

上記の例では、「a1」は整数値として推定され、「a2」は整数参照として推定されます。

1.参照を返す:

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
ログイン後にコピー

この場合、「get_foo()」は const 参照を返すため、「auto」は参照型を推定します。

2.静的ポインタ:

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
ログイン後にコピー

ここで、「s_foo」は静的ポインタであり参照ではないため、「auto」は値の型を推定します。

3.ポインターのコンテナーのループ:

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
ログイン後にコピー

このループでは、「auto」により、「foo」が Foo への共有ポインターとして推定されます。各反復では、ポインターの値のコピーが作成されます。

結論

要約すると、C 11 の "auto" の型推論ルールは簡単です。初期化式が値の場合、「auto」は値の型を推測します。初期化式が参照の場合、「auto」は参照型を推定します。 「自動」を効果的に使用し、予期しない動作を回避するには、これらのルールを理解することが不可欠です。

以上がC 11 で「auto」が値と参照を推定するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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