initializer lists c
例を詳細に使用して、C ++の初期化子リストに関するすべてを調べてください。
C ++は、初期化子リストを使用して、データメンバーをそれらの値に初期化します。
初期化リストは主に、コンストラクター本体の値を初期化できない特定の状況で使用されます。
Javaでリンクリストを宣言する方法
=> 無料のC ++コースについては、ここをクリックしてください。
C ++の初期化子リスト
イニシャライザリストの一般的な構文は次のとおりです。
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
初期化子リストが使用されるこれらの状況のいくつかを以下にリストします。
#1)デフォルトコンストラクタがメンバーオブジェクトクラスに提供されていません。
クラスのメンバーとして別のクラスオブジェクトがあり、そのオブジェクトのクラスにデフォルトコンストラクタがない場合、初期化子リストを使用してこのデータメンバーオブジェクトを初期化します。
これを次のプログラムに示します。
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
出力:
コンストラクター:: A; i = 10
コンストラクター:: B
上記のプログラムでは、クラスAのオブジェクトはクラスBのデータメンバーです。クラスAには、パラメーター化されたコンストラクターがありますが、デフォルトのコンストラクターはありません。したがって、クラスAオブジェクトを作成するには、クラスBで初期化子リストを使用する必要があります。
#2)Cの初期化 私たちのデータメンバー。
constデータメンバーは一度しか初期化できないため、初期化リストを使用して初期化します。
次の例を使用してこれを示します。
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
出力:
値は10です
上記のプログラムでは、データメンバーとしてconstがあります。このconstメンバーを値に初期化する必要がある場合は、次に示すように初期化子リストを使用して初期化します。
#3)参照データ型の初期化用。
定数のように、参照は不変です。したがって、参照型データメンバーを初期化する必要がある場合は常に、初期化子リストを使用します。
次のプログラムでは、初期化子リストを使用して参照データメンバーを初期化します。
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
出力:
値は10です
このプログラムでは、データメンバーとして参照があり、初期化子リストを使用して初期化します。
#4)メンバー名とパラメータが同じ名前の場合。
経験豊富なアジャイル面接の質問と回答
クラスのメンバー名がパラメーターで初期化され、これらのパラメーターがメンバー名と同じ名前である場合、初期化子リストを使用します。前のトピックでは、同じ状況でこのポインターを使用しました。 2番目のオプションは初期化子リストです。
次のプログラムで初期化子リストを使用するために、このポインターを使用して上記の例を変更しました。
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< 出力:
num = 100
ch = A

このプログラムでは、同じ名前のデータメンバーを初期化するためのパラメータを渡します。この場合、この目的のために初期化子リストを使用します。
#5)パフォーマンスを向上させる
コンストラクターの本体でデータメンバーを初期化するたびに、値を割り当てている間、データメンバーの一時オブジェクトが作成されます。割り当てが完了すると、この一時オブジェクトは削除されます。これは実際にはオーバーヘッドです。
一方、初期化子リストを使用する場合、値の割り当てにはコピーコンストラクターが使用されます。これにより、パフォーマンスが大幅に向上します。
結論
したがって、このチュートリアルでは、初期化子リストと、C ++プログラミングでそれらを使用する必要がある多くの状況について学習しました。
これらの状況が存在しない場合は初期化子リストを使用する必要はありませんが、プログラムのパフォーマンスを向上させるためにいつでも使用できます。
今後のチュートリアルでは、C ++のフレンド関数について詳しく説明します。
=> 完全なC ++チュートリアルリストについては、こちらをご覧ください。
推奨読書