コンストラクター(デフォルトコンストラクターを含む)、デストラクターの用途と特徴


1. コンストラクター

コンストラクターは、クラス名と同じ名前を持つ特別なメンバー関数です。コンストラクターは、クラス型オブジェクトの作成時にコンパイラーによって自動的に呼び出され、各データ メンバーが適切な初期値を持つようにします。また、コンストラクターのライフ サイクル全体でのみ呼び出されます。オブジェクト 1 回呼び出されます。コンストラクターの名前は構築と呼ばれていますが、コンストラクターの主なタスクはオブジェクトを作成するためのスペースを開くことではなく、オブジェクトを初期化することであることに注意してください

特性:

  1. 関数名はクラス名と同じです。
  2. 戻り値はありません。
  3. コンパイラは、オブジェクトがインスタンス化されるときに、対応するコンストラクターを自動的に呼び出します。
  4. コンストラクターはオーバーロードできます。

まず明示的なコンストラクターを見てみましょう
。オブジェクトを定義するとき、コンパイラーはすでに初期化を完了しています。
パラメーターがあり、それらがすべてデフォルトの型ではない場合は、オブジェクトの作成時にパラメーターを渡す必要があります。
ここに画像の説明を挿入

2 番目は、デフォルトのコンストラクター (コンストラクターでもあります)

クラスにコンストラクターが明示的に定義されていない場合、C++ コンパイラーはパラメーターのないデフォルトのコンストラクターを自動的に生成します。ユーザーがコンパイラーを明示的に定義すると、コンパイラーは生成されなくなります。

デフォルトのコンストラクターの種類:

注: 引数のないコンストラクター、完全なデフォルト コンストラクター、およびデフォルトでコンパイラーによって生成されるように記述されていないコンストラクターはすべて、デフォルト コンストラクターと見なすことができます。

1.パラメータなしタイプ

ここに画像の説明を挿入

2. フルデフォルトタイプ

ここに画像の説明を挿入

3. コンパイラによって自動生成される

自分たちで作っているのでここではお見せしにくいのですが、コンストラクタを書かない場合はコンパイラが自動でコンストラクタを生成します。
ここに画像の説明を挿入

4. まとめ

組み込み型とカスタム型とは何ですか?
1. 組み込み型/基本型: 言語自体で定義された基本型: int double char float など。
2. カスタム型: struct/class/unio で定義された変数など。

私たちは通常、デフォルトのコンストラクターはパラメーターを渡す必要はないと単純に考えています。

パラメーターなしのコンストラクターとデフォルト コンストラクターは両方ともデフォルト コンストラクターと呼ばれ、デフォルト コンストラクターは 1 つだけです。ここに画像の説明を挿入

ここで、コンパイラ 1 によって生成されるコンストラクターに注意する必要があります。
組み込み型は処理されません。
2. カスタム型はデフォルトのコンストラクターを呼び出します。

デフォルトのコンストラクターはどのような状況で使用されますか?
1. 一般に、組み込み型メンバーがある場合は、コンストラクターを自分で記述する必要があり、コンパイラーにコンストラクターを生成させることはできません。
2. すべてはカスタム型のメンバーであるため、コンパイラーに独自に生成させることを検討できます。

3. デストラクター

デストラクター: コンストラクターの機能とは異なり、デストラクターはオブジェクト自体の破棄を完了しません。ローカル オブジェクトの破棄はコンパイラーによって行われます。オブジェクトが破棄されると、自動的にデストラクターが呼び出され、オブジェクト内のリソースのクリーンアップが完了します。

デストラクターは、次のような特性を持つ特別なメンバー関数です。

  1. デストラクター名には、クラス名の前に文字 ~ が付加されます。
  2. パラメータも戻り値の型もありません。
  3. クラスにはデストラクターを 1 つだけ含めることができます。明示的に定義されていない場合、システムはデフォルトのデストラクターを自動的に生成します。注: デストラクターはオーバーロードできません
  4. オブジェクトのライフサイクルが終了すると、C++ コンパイル システムは自動的にデストラクターを呼び出します。

ここに画像の説明を挿入
実行中のプロセスを見てみましょう。
ここに画像の説明を挿入
ここに画像の説明を挿入
コンストラクターと同様、ユーザーが記述しない場合、デフォルトのデストラクターも生成されます。

デフォルトのデストラクター関数:
組み込み型のメンバーは処理されません。
カスタム型のメンバーは、そのデフォルトのデストラクター (デフォルトのみ) を呼び出します。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_74774759/article/details/130707825