32
auto a = 10;

コンパイラが知っているのaint、コンパイル時または実行時ですか? 実行時に型を推測すると、パフォーマンスに影響しませんか?

ありがとう

4

4 に答える 4

20

他の回答が対処しなかったことをいくつか追加したかっただけです。

  1. すべての宣言はコンパイル時に既知の型を持っている必要があるためauto、特別な扱いは受けず、コンパイル時に型を推測する必要があります。
  2. autoあなたは、どのように使用されるべきかを誤解しています。はい、できますauto i = 2;。問題なく動作します。しかし、自動が必要な状況は、たとえばラムダです。ラムダには名前を付けることができる型がありません (ただし、に割り当てることはできますstd::function)。これが役立つもう 1 つの状況は、クラスまたは関数テンプレート内で、特定の操作のタイプを把握することが非常に困難な場合があります (場合によっては不可能な場合もあります)。指定された型では、複数の型があると、どの型が返されるかを判断することが本質的に不可能になる可能性があります。decltypeもちろん、戻り値を把握するために関数を a でラップすることもできますが、 an のauto方がはるかに簡潔に記述できます。
  3. 人々はまた、イテレータに auto をかなり使用しているようです。なぜなら、それらの型は書くのが非常に面倒だからです。auto
于 2013-10-27T20:24:31.187 に答える
9

これはコンパイル時に完全に行われ、パフォーマンスの違いはありません。

auto i = 2;

と同じようにコンパイルします

int i = 2;
于 2013-10-27T13:49:32.877 に答える