2013-09-01 17 views
6

C++ 11で、変数タイプにautoを使用することをお勧めします。
クラスとベクターのような型を初期化するときにも適用されますか?自動でC++ 11の初期化

私たちは次のように書くべき意味:

auto a = 10; 
auto b = MyClass(); 
auto c = vector<int>{1, 2, 3}; 

の代わり:

auto a = 10; 
MyClass b; 
vector<int> c = {1, 2, 3}; 
+7

よりも読むのが大変長く、ため

auto a = 10; auto b = MyClass(); auto c = vector<int>(); 

を書く理由はありません。あなたはすでに型を書いているので、 'auto'を使っても意味がありません。 –

+5

Herb Sutterは、 'auto'の使用を強く推奨します。次の記事を参照してください。[GotW#94解決法:AAAスタイル(ほぼ常に自動)](http://herbsutter.com/2013/08/12/gotw-94-solution-aaa-style-almost-always-auto/) – nosid

+0

@KarolyHorvarthあなたの答えは本当に理にかなっていますが、nosidによって与えられたリンクは、「自動」の結果がよりクリーンなコードになると主張しています。 – user350954

答えて

13

autoは今、それはなります

VeryLongClassName *object = new VeryLongClassName(); 

のようなものを簡素化するだけで便利なショートカットです

auto *object = new VeryLongClassName(); 

しないでください

int a = 10; 
MyClass b; 
vector<int> c; 
+0

ありがとうございました。しかし、@nosidによって与えられたリンクでは、Herb Sutterはほぼすべてを "auto"に奨励しています。だから、私はこのスタイルをしばらく試してみて、それが私の生産性に影響を与えるかどうかを見てみましょう。 – user350954

+0

さて、私はハーブサッターを読んだことがあります。彼は**ほとんどの場合、常に怠惰、コミットメント、読みやすさの3つの理由を挙げています。そして私は彼に完全に同意します。しかし、これらの理由のどれもあなたのコードサンプルには示されていません。本当に怠け者であれば、より複雑なコードを書くことはありません。読みにくいです:)あなたのサンプルには、**常に**の部分ではなく**ほとんどの**が表示されます。 –

+2

@ mas.morozov、自動a、b、cを使用すると、より読みやすくなります**可読性** IMHO – Zhen

関連する問題