C++のコンストラクタ(Constructor)とは?役割と使い方をやさしく解説!
C++のクラスを学んでいると出てくる重要なキーワードのひとつが「コンストラクタ(Constructor)」です。
これは、クラスからオブジェクトを生成する際に、自動的に呼び出される特別な関数です。
この記事では、コンストラクタの基本から応用までを初心者向けにわかりやすく解説します。
コンストラクタとは?
コンストラクタ(Constructor)とは、クラスからオブジェクトを生成したときに、自動的に一度だけ呼び出される特殊な関数です。
主に、オブジェクトの初期化(データメンバへの値の代入)を行うために使います。
基本構文
コンストラクタは、以下のようにクラス名と同じ名前で定義します。戻り値は不要です(voidも書きません)。
class クラス名 {
public:
クラス名(); // コンストラクタの宣言
};
たとえば、以下のように書きます。
class Car {
public:
Car() {
// ここに初期化処理を書く
}
};
コンストラクタの例
#include <iostream>
using namespace std;
class Car {
private:
string name;
int speed;
public:
// コンストラクタ
Car(string carName) {
name = carName;
speed = 0;
cout << name << " を初期化しました。" << endl;
}
void showInfo() {
cout << "車名: " << name << ", スピード: " << speed << " km/h" << endl;
}
};
int main() {
Car myCar("スバル");
myCar.showInfo();
return 0;
}
このプログラムでは、オブジェクト myCar
を作成すると同時にコンストラクタが実行され、「スバル を初期化しました。」と表示されます。
コンストラクタの種類
コンストラクタにはいくつかのバリエーションがあります。
- デフォルトコンストラクタ:引数なしで初期化する。
- 引数付きコンストラクタ:値を渡して初期化する。
- コピーコンストラクタ:別のオブジェクトを元に新しいオブジェクトを作る。
- デリゲートコンストラクタ:C++11から追加された、他のコンストラクタを呼び出す構文。
コンストラクタのメリット
- 初期化の手間を省ける
オブジェクト生成時に自動で呼ばれるため、手動での初期設定が不要に。
- 安全なコードを書ける
初期値が確実に設定されることで、未初期化のバグを防げます。
- コードの見通しが良くなる
初期化のロジックがまとまるため、可読性が上がります。
まとめ
コンストラクタは、オブジェクトを安全かつ効率よく初期化するための重要な機能です。
クラスとセットで覚えるべき構文のひとつであり、C++を学ぶうえで避けて通れません。
まずは引数付きのコンストラクタから使ってみて、徐々にコピーコンストラクタなど応用的な内容にも挑戦してみましょう!