私のテキストブックの1つを読んで、コンストラクタの初期化子を見つけました。パフォーマンスの違いがあるかどうか、C++の一般的なコーディング標準には好ましい方法であるかどうかを知りたいと思います。C++のコンストラクタ:初期化子の使用と定義の値の設定の比較
仮定します
- をデフォルトコンストラクタは、任意のパラメータを取りません(そう何validtionは必要ありません)
- クラスは、2つのプライベート変数を持っていること:int型aとint型B
- 両方の変数がする必要があります
:例//Setting each private variable with assignment statements SampleClass::SampleClass() { a = 0; b = 0; } //Using initializers to set the private variables SampleClass::SampleClass() : a(0), b(0) { }
0に設定します
私はパラメータを持っており、パラメータは検証のいくつかの並べ替えを必要とするコンストラクタがある場合、それは内部に検証メソッドを使用するのが最善だと想像します。あなたがそれらを混ぜると言われていますか?
例:変数、パフォーマンスに優れている設定の二つの方法の
- :
SampleClass2::SampleClass2(int fNumber, int sNumber) : a(fNumber) { makeSureNotZero(sNumber); }
ちょうど質問を明確にするには? - C++の一般的なコーディング標準では一般的に1つの方法が好まれますか?
- 両方の方法を混在させることはできますか?
私はなぜあなたがダウン投票をするのか教えてください。私はルールとパフォーマンスを求めているので、これは意見に基づいていない質問であると感じています。 – kingcobra1986
もし私が間違っていないなら、主な違いは初期化が起こる時です。初期化リストを使用すると、クラスメンバーはクラス宣言の順序に従って初期化され、次にconstrictorが実行されます。 2番目のケースでは、すべてがコンストラクタメソッド内で初期化されます。 – Logman