- コンストラクタも一種のメンバー関数です
- クラス名と同じ名前、戻り値なし、オプションのパラメーター
- オブジェクトが生成されると、コンストラクタは自動的に呼び出されます。オブジェクトが生成された後、コンストラクタは無効になります(オブジェクトが存在する前にコンストラクタが呼び出されます)
- 複数のコンストラクター
- なぜ必要なの?
- 初期化関数を記述する必要はなく、初期化関数の呼び出しを忘れる心配もありません。
- 一部のオブジェクトは、間違いを避けるために初期化される前に使用されます。
- 使用する
- デフォルトのコンストラクターが必要です。コンストラクターを自分で作成する場合は、デフォルトのコンストラクターを作成する必要があります(完全なデフォルトのパラメーターを使用するか、パラメーターを使用しません)。
- 初期化リストを介して初期化できます
- コンストラクターのポリモーフィズム
配列でのコンストラクタの使用:
#include<iostream>
using namespace std;
class Test{
private:
int x;
public:
Test():x(0){
cout<<"Constructor 1 called\n";}
Test(int n):x(n){
cout<<"Constructor 2 called\n"; }
};
int main()
{
Test a[2];
Test b[2]{
3,4};
Test c[2]{
3};
Test* d = new Test[2];
delete [] d;
return 0;
}
結果:
(Test* e[3]={new Test(3),new Test};
e:はポインターの配列であり、ポインターは自動的にコンストラクターを呼び出さないため、これはコンストラクターを2回呼び出します)