ゲッターセッター関数とコンストラクターの違いは何ですか? ゲッターセッターとコンストラクターの両方の目的は、クラス内のプライベートメンバー変数を初期化することだと思います。どちらも同じことをしているので、ちょっと混乱しています。それぞれが使用される特定の状況はありますか、それとも同じ意味で使用できますか?
4 に答える
コンストラクターはインスタンス変数を初期化する、つまり最初の(初期) 値を与えるために使用されますが、 setterメソッドは後でそれらを変更するために使用されます。ゲッターは、所有している現在の値を取得するために使用されます。
ウィキペディアはあなたの質問getters
にsetters
非常にうまく答えます:
コンピューター サイエンスでは、ミューテーター メソッドは、変数への変更を制御するために使用されるメソッドです。セッターメソッドとしても広く知られています。多くの場合、セッターには、プライベート メンバー変数の値を返すゲッター (アクセサーとも呼ばれます) が伴います。
mutator メソッドは、カプセル化の原則に従って、オブジェクト指向プログラミングで最もよく使用されます。この原則に従って、クラスのメンバー変数は非公開にして他のコードから保護し、必要な新しい値をパラメーターとして取り、必要に応じて検証するパブリック メンバー関数 (ミューテーター メソッド) によってのみ変更できます。それを変更し、プライベート メンバー変数を変更します。
そして、それをコンストラクターの定義と比較します。
オブジェクト指向プログラミングでは、クラス内のコンストラクター (ctor と短縮されることもあります) は、オブジェクトを作成するために呼び出される特殊なタイプのサブルーチンです。多くの場合、コンストラクターが必要なメンバー変数を設定するために使用する引数を受け入れて、使用する新しいオブジェクトを準備します。
コンストラクターはインスタンス メソッドに似ていますが、明示的な戻り値の型がなく、暗黙的に継承されず、通常はスコープ修飾子の規則が異なるという点でメソッドとは異なります。コンストラクターは、宣言するクラスと同じ名前を持つことがよくあります。それらには、オブジェクトのデータ メンバーを初期化し、クラスの不変条件を確立するタスクがあり、不変条件が無効な場合は失敗します。適切に記述されたコンストラクターは、結果のオブジェクトを有効な状態のままにします。不変オブジェクトは、コンストラクターで初期化する必要があります。
したがって、これらの定義を使用すると、次のことが推測できます。
- コンストラクターは、オブジェクトのデータ メンバーを初期化します (セッターによく似ています)。つまり、オブジェクトのデータ メンバーを何らかの初期値に設定しますが、これはインスタンス化時にのみ行われます。
- セッターは、オブジェクトの有効期間中にいつでもデータ メンバーの値を変更するために使用されます。
- ゲッターは、オブジェクトの有効期間中にいつでもデータ メンバーの値にアクセスするために使用されます。
インスタンスのコンストラクターは 1 回だけ呼び出されます。ゲッター/セッターは、オブジェクトの存続期間中の任意の時点で呼び出すことができます。コンストラクターはオブジェクトを初期化するために使用され、セッターはより動的なメンバーのオブジェクトの状態を維持するために使用されます (ゲッターはその状態にアクセスするために使用されます)。
コンストラクターは、作成中のインスタンスを初期化します。
オブジェクト(クラスのインスタンス)が削除されると、デストラクタが呼び出されます。
ゲッターは、プロパティの値を取得するために使用されます。
セッターは、プロパティの値を設定するために使用されます。
Example *ex = new Example(); // Constructor is called
char *ch = ex->getSomeProperty(); // Getter is called
ex->setSomeProperty("parameter"); // Setter is called with a passed argument
delete ex; // Destructor is called