●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

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から追加された、他のコンストラクタを呼び出す構文。

コンストラクタのメリット

  1. 初期化の手間を省ける
    オブジェクト生成時に自動で呼ばれるため、手動での初期設定が不要に。
  2. 安全なコードを書ける
    初期値が確実に設定されることで、未初期化のバグを防げます。
  3. コードの見通しが良くなる
    初期化のロジックがまとまるため、可読性が上がります。

まとめ

コンストラクタは、オブジェクトを安全かつ効率よく初期化するための重要な機能です。
クラスとセットで覚えるべき構文のひとつであり、C++を学ぶうえで避けて通れません。

まずは引数付きのコンストラクタから使ってみて、徐々にコピーコンストラクタなど応用的な内容にも挑戦してみましょう!

 

C++関連用語集

−−−−−  C++  −−−−−

C++のクラス(Class)とは?仕組みと使い方をわかりやすく解説!

C++のオブジェクト(Object)とは?クラスとの関係と役割をわかりやすく解説!

C++のコンストラクタ(Constructor)とは?役割と使い方をやさしく解説!

C++のデストラクタ(Destructor)とは?役割と使い方をやさしく解説!

C++の継承(Inheritance)とは?クラスを拡張する基本テクニック

C++の多態性/ポリモーフィズム(Polymorphism)とは?オブジェクト指向の真髄を解説!

C++のオーバーロード(Overload)とは?関数や演算子を便利に使い分けよう!

C++のオーバーライド(Override)とは?継承と仮想関数の正しい使い方

C++の仮想関数(Virtual Function)とは?ポリモーフィズムを実現する仕組みを解説!

C++の純粋仮想関数(Pure Virtual Function)とは?抽象クラスとの関係も解説!

C++の抽象クラス(Abstract Class)とは?使い方と役割をわかりやすく解説!

C++のテンプレート(Template)とは?型に依存しない汎用的な関数・クラスを作ろう!

C++の名前空間(Namespace)とは?名前の衝突を防ぐ便利な機能

C++の標準テンプレートライブラリ(STL)とは?効率的な開発に必須のライブラリ群

C++のベクター(vector)とは?配列より便利なSTLコンテナを使いこなそう!

C++のイテレータ(Iterator)とは?STLコンテナを自在に操作する鍵

C++の参照(Reference)とは?ポインタとの違いもわかりやすく解説!

C++のポインタ(Pointer)とは?メモリを操る強力な機能をやさしく解説!

C++の動的メモリ確保(Dynamic Memory Allocation)とは?newとdeleteを使いこなそう

C++のnew/delete演算子とは?動的メモリ確保の基本をマスターしよう!

C++の例外処理(Exception Handling)とは?try/catch/throwでエラーに強いプログラムを作ろう

C++のtry/catch構文とは?例外処理の基本をやさしく解説!

C++のRAIIとは?リソース管理を自動化する重要な設計原則

C++の静的変数(static variable)とは?使い方・特徴・注意点をやさしく解説!

C++の関数ポインタ(Function Pointer)とは?使い方と活用例をわかりやすく解説!

C++のラムダ式(Lambda Expression)とは?書き方・使い方をやさしく解説!

C++のスマートポインタ(Smart Pointer)とは?自動で安全なメモリ管理を実現しよう!

C++のコンパイル(Compile)とは?仕組みと流れをわかりやすく解説!

C++のリンク(Link)とは?コンパイルとの違いとエラー対策を解説!

C++のプリプロセッサディレクティブとは?#include や #define の意味と使い方