工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++ コンストラクター初期化リスト:その理由と使用方法

オブジェクトをインスタンス化するとき、コンストラクターはメンバー変数の初期化を処理することがよくあります。このようなメンバーの場合、コンストラクターの初期化リストは、コンストラクターの本体が実行される前に初期化を行う短縮された効率的な方法を提供します。パフォーマンスとは別に、const 変数または基本クラスのメンバーのために必須の場合もあります。

コンストラクター初期化リストとは何ですか?

コンストラクタ初期化リストは、メンバー変数を直接初期化するプロシージャであるため、コピーされて割り当てられるデフォルトのコンストラクタはありません。

構文

コンストラクター リストの初期化の構文は次のとおりです。

ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
 // Constructor body
 
}

ここで、member1 と member2 は、コンストラクター本体が実行される前に param1 と param2 で初期化されます。

コンストラクター初期化リストの例

ここでは、初期化リストの使用方法を示す簡単な例を示します。

#include <iostream>
#include <string>
class Student {
public:
 Student(const std::string& name, int age) : name(name), age(age) {}
 void display() const {
 std::cout << "Name: " << name << ", Age: " << age << "\n";
 }
 private:
 std::string name;
 int age;
};
int main() {
 Student s("Navya", 20);
 s.display();
 return 0;
}

出力

Name: Navya, Age: 20

コンストラクター初期化リストを使用する理由

特殊な場合

以下では、コンストラクター初期化リストのいくつかの特殊なケースについて説明します -

Const または参照メンバー

Const 変数と参照メンバーは再割り当てできないため、初期化リストで初期化する必要があります。

class Config {
public:
 Config(const std::string& product, const int & model) 
 : product (product), model(model) {}
 private:
 const std::string product;
 const int & model; 
};

基本クラスの初期化

派生クラスが基本クラスから継承する場合、初期化リストを使用して基本クラスのコンストラクターを呼び出すことができます。

class Base {
 public:
 Base(int value) : baseValue(value) {}
 protected:
 int baseValue;
};
class Derived : public Base {
 public:
 Derived(int value, int extra) : Base(value), extraValue(extra) {}
 private:
 int extraValue;
};

C言語

  1. 15 の最高のオンライン C++ プログラミング コース (2021 年 12 月)
  2. C# Enum(Enumeration) と例
  3. C での簡単なポインター配列の初期化:ヒントとベスト プラクティス
  4. 例による配列の C++ 動的割り当て
  5. C++ オーバーロード (演算子と関数)
  6. C# - 安全でないコード
  7. C# 変数と (プリミティブ) データ型
  8. C++ ポインター
  9. C++ break ステートメント
  10. C# 構造体
  11. C++ データ構造