5. VISUAL STUDIO 2012で使える機能
Visual Studio 2012で使えるC++11機能で便利な機能
型推論 (type inference)
unique_ptr
smart_ptr
範囲ベースのfor-loop (range based for-loop)
長くなるので今回はやめました
iteratorの説明とか無理…
6. 型推論 (TYPE INFERENCE)
変数の型をコンパイラに計算させる機能
変数の型が複雑な時に有効
C++のテンプレートを使うと型名が複雑になるので書いてられない…
変数宣言時の型名に”auto”と書く
例:
auto i = 123; // iはint型
auto s = “hoge”; // sはchar*型
vector<int> v;
auto it = v.begin(); // itはvector<int>::iterator型
// (v.begin()の戻り値の型)
vector<int>::iterator it = v.begin(); // ↑はこれと等価
7. 型推論 (TYPE INFERENCE)
よくある誤解
型チェックされないのでバグが多くなる
→型チェックされます
auto o = new Hoge();
o = 1; // コンパイルエラー
実行時にオーバーヘッドが増えて遅くなる
→増えません.コンパイル時に型が決るので実行時は変わらない.
auto o = new Hoge(); // Hoge* o = new Hoge();と等価