ホームページ > バックエンド開発 > C++ > コロン (:) 構文は、C コンストラクターでメンバーの初期化と基本クラスの呼び出しにどのように機能しますか?

コロン (:) 構文は、C コンストラクターでメンバーの初期化と基本クラスの呼び出しにどのように機能しますか?

DDD
リリース: 2024-12-02 05:22:14
オリジナル
179 人が閲覧しました

How Does the Colon (:) Syntax Work in C   Constructors for Member Initialization and Base Class Calls?

コンストラクターのコロン構文を理解する

C では、コンストラクターは、オブジェクトの作成時に初期化する関数です。コンストラクター名は通常、クラス名と一致しますが、固有の初期化構文を持つ場合があります。コンストラクター構文の注目すべき点の 1 つは、コロン (:) の後に引数リストが続くことです。

メンバー初期化子リストとして知られるこの構文は、次の 2 つの主な目的を果たします。

  • 基本クラス コンストラクターの呼び出し:
    派生クラスが作成されるとき、その基本クラスも初期化された。メンバー初期化子リストを使用すると、必要に応じて引数を渡して、基本クラスのコンストラクターを呼び出すことができます。
  • データ メンバーの初期化:
    メンバー初期化子リストは、非データ メンバーの初期化にも使用できます。 -クラスの静的データ メンバー。これは、データ メンバー名を指定し、その後に代入演算子と引数を指定することで実行されます。

たとえば、次のコードを考えてみましょう。

class demo 
{
private:
    unsigned char len, *dat;

public:
    demo(unsigned char le = 5, unsigned char default) : len(le) 
    { 
        dat = new char[len];                                      
        for (int i = 0; i <= le; i++)                             
            dat[i] = default;
    }

    void ~demo(void) 
    {                                            
        delete [] *dat;                                           
    }
};
ログイン後にコピー

この例では、コンストラクターには、le とdefault の 2 つのパラメーターがあります。メンバー初期化子リスト : len(le) は、le の値を len データ メンバーに割り当てます。

さらに、派生クラス newdemo:

class newdemo : public demo 
{
private:
    int *dat1;

public:
    newdemo(void) : demo(0, 0)
    {
     *dat1 = 0;                                                   
     return 0;                                                    
    }
};
ログイン後にコピー

メンバー初期化子リスト : Demon( 0, 0) 引数 0 と 0 を使用して基底クラスのコンストラクターのデモを呼び出し、基底クラスの len およびデフォルトのデータ メンバーを初期化します。 class.

メンバー初期化子リストは、データ メンバーを初期化し、基本クラスのコンストラクターを呼び出すための便利で効率的な方法であり、コードの安全性と明確さを強化します。

以上がコロン (:) 構文は、C コンストラクターでメンバーの初期化と基本クラスの呼び出しにどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート