bugfix> c > 投稿

私はglibの初心者であり、 my_class_name_class_init() の違いを理解するのにまだ苦労していますメソッドと my_class_name_init() メソッド。

後者はC ++コンストラクタと同等であり、作成されたオブジェクトのインスタンスごとになりますが、それらの my_class_name_class_init() の目的はよくわかりませんメソッド。読んでドキュメント 私は class_init() だと思うメソッドは、すべてのインスタンスに有効な静的コンストラクターに多少似ていますが、これが正しいかどうかはまだわかりません。

class_init() の目的は何ですかメソッド?

回答 1 件
  • class_init  関数は、最初のインスタンスが構築される前に、クラスごとに1回実行されます。この方法では、C#静的コンストラクターに似ています。対照的に、 instance_init  関数は、作成されたオブジェクトのすべてのインスタンスに対して呼び出され、そのインスタンスを初期化します。

    静的コンストラクターのように、 class_init  すべてのインスタンスが必要とする可能性のある共有データを初期化する責任がありますが、より重要なのは、GObjectでGObjectオブジェクトシステムのセットアップに重要な役割を果たすことです。彼らは以下を担当します:

    仮想関数テーブルのセットアップ

    GObjectプロパティシステムのセットアップ

    信号を設定する

あなたの答え