Visual Studio 2015で利用できるC++11の主な新機能をわかりやすく解説
C++11とは
C++11は、標準C++言語のバージョンのひとつです。2011年8月12日に国際標準化機構(ISO)によって承認され、その後C++14、C++17へと規格が更新されていきました。C++11ではコア言語に多くの機能追加が行われており、Visual C++ではこれらの機能の大多数が実装されています。
ここでは、Visual Studio 2015で利用できる代表的なC++11機能を紹介します。
Visual Studio 2015で使える主なC++11機能
nullptr(ヌルポインタリテラル)
以前はヌルポインタを表すのにゼロが使われていましたが、これには整数値への暗黙的な変換が行われるという欠点がありました。C++11では、ヌルポインタリテラルとしてstd::nullptr_t型のnullptrが導入され、暗黙的な変換が発生しなくなりました。これにより、意図しない型変換によるバグを防ぐことができます。
ラムダ式(Lambdas)
ラムダ式を使うと、関数をローカルな場所で直接定義できます。匿名関数とも呼ばれるこの記法により、その場で簡潔に関数オブジェクトを作成可能です。ラムダ式は、std::functionなどの関数オブジェクトが期待される場所ならどこでも使用できます。
auto(型推論)
従来のC++では変数の型を明示的に指定する必要がありましたが、C++11ではautoキーワードを使うことで、初期化子からコンパイラが自動的に型を推論します。これにより、冗長な型指定を省略して変数を宣言でき、特にイテレータなど長い型名を扱う際にコードがすっきりします。
override と final
C++11では、overrideとfinalという2つの新しい特殊識別子が導入されました。overrideは、そのメソッドが基底クラスの仮想関数をオーバーライドすることを意図していることを明示します。一方、finalは、派生クラスがその仮想関数をさらにオーバーライドすることを禁止します。これらにより、オーバーライドミスをコンパイル時に検出できるようになりました。
削除関数とデフォルト関数(deleted / defaulted functions)
=delete;を指定した削除関数は、オブジェクトのコピーなどを禁止したい場合に便利です。例えばコピーコンストラクタを削除すれば、コピー操作をコンパイル時に防げます。逆に=default;を指定すると、コンパイラに対して関数のデフォルト実装を生成するよう指示できます。
強く型付けされた列挙型(enum class)
従来のenumは、列挙子が外側のスコープに漏れ出すという問題を抱えていました。C++11では「enum class」キーワードで宣言する強く型付けされた列挙型が導入され、列挙子は周囲のスコープにエクスポートされなくなりました。これにより名前の衝突を避け、より安全なコードを書けます。
static_assert と型特性(type traits)
static_assertは、コンパイル時に行アサーション検査を行います。アサーションが真であれば何も表示されず、偽であればエラーメッセージが出力されます。型特性(type traits)ライブラリと組み合わせることで、テンプレートの型に関する条件をコンパイル時に検証できます。
範囲ベースforループ(Range-based for loops)
C++11では、コレクションを反復処理するための範囲ベースforループが導入されました。Cスタイルの配列やSTLコンテナなども、他言語の「foreach」のような構文で簡潔に走査できるようになり、ループ処理のコードが大幅に読みやすくなりました。
-
Visual Studioで「プログラムを開始できません・アクセスが拒否されました」エラーを修正する12の方法
多くのユーザーから、Visual Studioでデバッグ中に「プログラムを開始できません。アクセスが拒否されました」というエラーが発生するとの報告が寄せられています。特にVisual C++ 2017やVisual C++ 2015でプログラムを実行しようとした際に発生しやすい問題です。同じエラーでお困りの方は、本記事で紹介する対処法をお試しください。 「プログラムを開始できません・アクセスが拒否されました」エラーの修正方法 Visual StudioはMicrosoftが1993年に初めて開発したプログラミング言語コンパイラで、初期の開発環境のひとつです。現在はC、C++、C++/CXなど
-
Microsoft、Visual Studio 2019を4月2日に正式リリースへ
Microsoftは、WindowsおよびMac向けの統合開発環境「Visual Studio」の最新版「Visual Studio 2019」の登場に合わせて、丸一日かけてのローンチイベントを開催します。イベントは4月2日午前9時に開始される予定です。同社はこの場で、新版のVisual Studioが開発者の生産性をどのように向上させるのかを紹介する予定です。また、新しいビルドでは、AI機能によって開発者が得られるメリットについても取り上げられます。 新バージョンのメリットとは? 生産性向上が最大の特徴とされる今回のバージョンでは、コーディングスペースの拡大や、よりスマートなデバッグ体験が