[C++]初期化リスト


📌 1.初期化リスト


例1に示すように、作成者内部でレプリケーションを初期化するときに、デバッガ作成者を呼び出してから代入する.
ただし、例2に示すように、[初期化リスト](Initialization List)では、ジェネレータの呼び出し時にメンバー変数を同時に初期化できます.
初期化リストは次のとおりです.(클래스 이름)(자료형 인자 1, 자료형 인자 2, ...) : (멤버 변수 1)(인자 1), (멤버 변수 2)(인자 2), ... {}

例1(レプリケーションの初期化)

class Date {
private:
    int year;
    int month;
    int day;
public:
    Date() {
        year = 2021;
        month = 8;
        day = 25;
    }
    Date(int _year, int _month, int _day) {
        year = _year;
        month = _month;
        day = _day;
    }

例2(直接初期化、制服初期化)

class Date {
private:
    int year;
    int month;
    int day;
public:
    Date() : year(2021), month(8), day(25) {}
    
    Date(int year, int month, int day) : year(year), month(month), day(day) {}
    // 멤버 변수와 인자의 이름이 같아도 정상적으로 작동

📌 2.初期化リストを使用する必要がある


メンバー変数に定数変数とReference変数を同時に宣言して初期化する必要がある場合は、初期化リストを使用する必要があります.
class Date {
private:
    const int year;
    int month;
    int day;
public:
    Date() : year(2021), month(8), day(25) {} // 가능
    
    Date() // 불가능
    {
        year = 2021; // 상수 변수에 대입할 수 없음
        month = 8;
        day = 25;
    }
また、変数としてユーザ定義クラス(例えばintdoubleなどの非元データ型)を使用する場合、初期化リストを使用することは、借用操作を実行するよりも効率的に初期化することができる.