コンストラクタ

コンストラクタ（）は、オブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化などを行なう関数あるいはメソッドのことである。対義語はデストラクタ。
オブジェクトの生成は、
の二段階を経て行なわれるが、コンストラクタを持つプログラミング言語ではメモリ割り当ては言語機能に組み込まれ、初期化用のコードのみを記述するのが普通である。
JISでは、「構築子」という直訳が割り当てられている規格もあるが、「コンストラクタ」という用語が使われている規格もある。
長音符を付けた「コンストラクター」という表記を採用しているドキュメントもある。
クラスベース言語でのコンストラクタ.
C++、Java、C#、PHPなど、クラスベースのオブジェクト指向言語では、コンストラクタはクラスのメンバとして定義される。
C++、Java、C#のコンストラクタは、「クラス名と同一の名前を持ち、戻り値指定のない関数（メソッド）」であるかのような記法となっている。以下にJavaの例を示す。
class SomeClass {
 SomeClass(/*引数リスト*/) {
 // 初期化用のコード
SomeClass obj = new SomeClass(/*引数リスト*/);
なお、が、C++やJavaでは厳密にいえばこれは誤りであり、コンストラクタには名前はない。C++では「クラス名と同一の名前を持つメンバー関数」を定義することはできない。一方、Javaでは「クラス名と同一の名前を持つメソッド」を、コンストラクタとは別に定義可能であるが、これは混乱を招くだけでなく、「クラス名を大文字で始め、メソッド名を小文字で始める」というJava公式の慣習に反することにもなるため、通例コーディング規約で禁止または非推奨とされている。
また、PHPではcodice_1、Rubyではcodice_2というように、特定の名前を持つメソッドを作ればそれがコンストラクタになる、というプログラミング言語も存在する。
コンストラクタに渡す引数により初期化のバリエーションが定義される。特にパターンとして名前をもつコンストラクタは以下である。
JavaScriptのコンストラクタ.
JavaScriptはプロトタイプベースのオブジェクト指向言語であるため、クラスは存在せず、new演算子付きで通常の関数を呼び出すことで、コンストラクタとして動作させる。コンストラクタとして呼び出された関数では、codice_4は新しく生成されるオブジェクトを指すようになり、また prototype プロパティも設定される。
なお、ECMAScript 2015 (ES6) 以降はキーワード codice_5 をサポートし、codice_5 の関数プロパティ codice_7 としてコンストラクタを定義し codice_8 演算子に渡される式で暗黙に呼び出される。