一、=デフォルト、=削除
1は、私たちはクラスのデフォルトの機能の概念を見てする必要があります:
- 私たちは、クラスを設計し、書き込み時に大幅に肯定していない場合は、次のようにC ++は、デフォルトのクラスは、いくつかの機能をご提供します:
(1)コンストラクタ(())、(2)デストラクタ(〜A())、(3)コンストラクタ((A&))をコピーし、(4)割当機能(A&演算子=(A&)をコピー)、(5)モバイルコンストラクタ((A &&))、(6)移動割り当て機能(A&演算子=(&&))
注:コピー機能ポインタが浅いコピー(唯一の4バイトのポインタ、ポインタ浅いコピーだけ過去のもの4つのバイトコピーのシェア)とディープコピーを区別する伴うだろう場合(コピーバイトポインタだけでなく、共有するには、また、物事のポインタ過去をコピーする必要があります)。
- そして、グローバルなデフォルトオペレータの機能
(1)オペレータ、(2)オペレータおよび、(3)演算子&&、(4)演算子*、(5)オペレータ - >(6)演算子 - > *、新しい(7)演算子、(8)演算子を削除。
必要性がビッグ3(コンストラクタ、コピーコンストラクタ、代入コピー)/ BIG-5(コンストラクタ新しいモバイル、モバイル割り当て機能)をカスタマイズするには2、
ポイントメンバー(ポインタメンバー)を持つクラスは、その後、我々は結論付けることができた場合は、ケースの大半はのようなデフォルトで、ビッグ3が与えられていないだろうではないとの場合には、ビッグ3を与えなければなりません。
図3に示すように、例えばキーワードを使用して
- 以下に示すコンストラクタは、コンストラクタ、モバイルコンストラクタ(動物園&&を示し得右辺値参照である)、5員のミューテータ、関数のようなモバイル割り当て機能、デフォルト、再び機能5種類の基本的なアクションを削除コピーであなたはこれらの5つのカスタマイズした場合は、C ++のために、コンパイラはあなたのためのデフォルトの相関関数を生成しませんが、私たちはバック= defaultキーワードを追加する場合は、取得およびコンパイラを使用することができます我々は、デフォルトの関数(生成するよう明示デフォルト:彼は、コンパイラに指示してもまた定義生成機能のデフォルトデフォルトのバージョンを));
- =それ以上の反対であるに敬意を削除し、=これは他の人がエラーを(使用する一度あなたがいない機能、その機能は、使用することはできません削除されたことを意味し、削除、明示的に削除:コンパイラに伝える生成しないデフォルトの欠如の機能を地方版)、プログラマがより正確に機能のデフォルトバージョンを制御できるように、「クラスのデフォルトの制御機能」を強化することを意図し、これらの2つの新機能のご紹介。
- キーワードを使用します
二、エイリアス(別名、仮名)
1、2.0を使用してエイリアスを表すために使用される新しい意味、文法を持っています
エイリアシングを使用して声明、そしてこれは、引数の別名である、また意味の別名を持っているだけでなく、定義(パラメータ化することができます)、typedefは(ない引数)が、彼らは特別な時間を使ってのための代替ではない、しかし、エイリアスの名前だけで行うには、以前は知られている、専門的なまたは部分的な特殊化を行うことはできません(仮名が神を置き換えることはできません)。
2、すべての使用しての使用の分類
三、noexcept
noexceptは、一定の条件の下での状況は、例外がスローされないことを、条件を書くことができブレースバックスローされる例外を確保しないように関数を宣言するために使用され、一般的な例外処理プロセスは:いつ発生する異常なプログラム> STD -例外処理がある場合、呼び出し元が例外を処理しない場合には異常情報)を治療しなければ、それはSTDを呼び出します先頭に、床に報告します::(終了し、呼び出し元に報告しました::中止()、その後、プログラムを終了します。
四、オーバーライド
この関数は、親クラスの仮想関数に意思をオーバーライドすることで、コンパイラに伝えるために、同等の親クラスを書き換えることが明確な仮想関数をオーバーライドし、このキーワードなしでコンパイラのヘルプチェックをしましょう、コンパイラはしませんあなたがチェックに役立ちます
五、最終
新しい最後の二つの機能:(1)基底クラスが禁止継承される、(2)禁止仮想関数が上書きされます。
六、CONST
基準セクションが再生される。https://blog.csdn.net/u011327981/article/details/77656866
これは、目的は、上記の最終的なオーバーライドを比較することで、新たに、非文法一部の個人的な要約です。
- C ++では、変数はconst型として宣言されている場合、この変数の値は、コンパイル時エラーに依存している変更しようとし
- のみconstメンバ関数はconstのクラスオブジェクトに呼ばれるように宣言されます
- メンバ関数のメンバーがconstのように宣言されている場合は、この関数は、クラスのデータメンバを変更することが許可されていません
メンバ関数の上記の定義において、(OK定義する)正当であり、エラー()の定義は違法です。