特殊なメンバー関数 (C++)
C++ では、クラス メンバーとしてだけ宣言できる関数を数種類、定義しています。これらは、"特殊なメンバー関数" と呼ばれます。これらの関数は、特定のクラスのオブジェクトを作成、破棄、コピーする方法、および、他の種類のオブジェクトに変換する方法に影響します。 これらの関数の多くでもう 1 つ重要な特質は、(コンパイラによる) 暗黙的呼び出しができることです。
ここで説明する特殊なメンバー関数は次のとおりです。
コンストラクター。 オブジェクトを自動的に初期化します。
デストラクター。 オブジェクトが明示的または暗黙的に破棄された後、クリーンアップを実行します。
変換関数。 クラス型と別の型とを相互に変換します。
operator new 関数。 ストレージを動的に割り当てます。
operator delete 関数。 new 演算子を使用して割り当てたストレージを解放します。
代入演算子 (operator=). 代入が発生したときに使用されます。
上記のリスト項目は、クラスごとにユーザー定義ができます。
特殊なメンバー関数は、他のメンバー関数と同じアクセス規則に従います。 アクセス規則については、「メンバー アクセス コントロール」で説明します。 メンバー関数とフレンド関数の動作を次の表にまとめます。
関数の動作の概要
関数の種類 |
基底クラスから継承されるか |
仮想関数にできるか |
値を返すことができるか |
メンバー関数かフレンド関数か |
コンパイラによって自動生成されるか |
---|---|---|---|---|---|
コンストラクター |
X |
X |
X |
メンバー |
○ |
コピー コンストラクター |
X |
X |
X |
メンバー |
○ |
デストラクターです。 |
X |
○ |
X |
メンバー |
○ |
変換 |
○ |
○ |
X |
メンバー |
X |
代入 (operator=) |
X |
○ |
○ |
メンバー |
○ |
new |
○ |
X |
void* |
静的メンバー |
X |
delete |
○ |
X |
void |
静的メンバー |
X |
その他のメンバー関数 |
○ |
○ |
○ |
メンバー |
X |
フレンド関数 |
X |
X |
○ |
Friend |
X |