「C++11」の版間の差分
提供: C++入門
(相違点なし)
|
2013年11月2日 (土) 14:26時点における版
C++11 とは、2011年での最新のC++言語のISO標準です。言語の機能追加や標準C++ライブラリの拡張を行っています。
読み方
- C++11
- しーぷらすぷらす じゅういち
概要
C++11の拡張やライブラリを使用するためには、新しいコンパイラが必要になります。また、コンパイラによっては、C++11の機能を使うために、明示的にオプションで指定する必要があります。
以下は、コンパイルオプションの例です。
g++48 -std=c++11 foo.cc clang -std=c++11 foo.cc
クラスの初期化
従来は、このようにクラスの初期化を定義できませんでした。
#include <iostream> using namespace std; class C { int i; public: C (int ia) : i(ia) {} C () : C (123) {} }; int main(int argc, char const* argv[]) { C c; return 0; }
コンパイル方法は、以下の通りです。
clang++ constractor1.cpp -std=c++11
従来のコンパイラ・コンパイルモードでは、以下のエラーになります。 clang++では、C++11でのみ許可されると説明しています。
% g++ constractor1.cpp constractor1.cpp: In constructor 'C::C()': constractor1.cpp:7: error: type 'C' is not a direct base of 'C' % clang++ constractor1.cpp constractor1.cpp:7:9: error: delegating constructors are permitted only in C++11 C () : C (123) {} ^ 1 error generated.