C++のクラスのコンストラクタのサンプルです。
目次
- コンストラクタ
- 1.クラスとコンストラクタを定義する (class1.h)
- 2.メンバ関数とコンストラクタを実装する (class1.cpp)
- 3.定義したコンストラクタを使用する (test1.cpp)
コンストラクタ
コンストラクタとはクラスからオブジェクトを生成する時に実行される処理です。
主に初期化処理などに使われます。
クラス名がコンストラクタの名前(関数名)になります。
→Class1というクラス名であればClass1がコンストラクタの名前になる
以降は、説明用として3つのファイルがあります。(class1.h、class1.cpp、test1.cpp)
1.クラスとコンストラクタを定義する (class1.h)
クラスとコンストラクタを定義しているファイルです。
| No. | 説明 |
|---|---|
| 1 | 9行目は、コンストラクタの定義をしています。コンストラクタの処理の記述はclass1.cppにあります。 |
| 2 | 11行目は、コンストラクタのオーバーロードです。 オーバーロードとは、同じ関数名で引数のデータ型または引数の数が異なっているものです。 |
#include <string>
using namespace std;
class Class1
{
private:
string name; //メンバ変数名
public:
// No.1
Class1(); //コンストラクタ
// No.2
Class1(string name); //コンストラクタのオーバーロード
void print1(); //メンバ関数のプロトタイプ宣言
}; //←セミコロン
2.メンバ関数とコンストラクタを実装する (class1.cpp)
メンバ関数とコンストラクタを実装しているファイルです。
| No. | 説明 |
|---|---|
| 1 | 5-8行目は、コンストラクタです。7行目は、画面に文字を表示します。 |
| 2 | 10-14行目は、コンストラクタのオーバーロードです。12行目は、画面に文字を表示します。13行目は、引数の値をメンバ変数にセットしています。 メンバ変数の定義は、class1.hの6行目にあります。 |
#include "Class1.h"
#include
using namespace std;
// No.1
Class1::Class1()
{
cout << "コンストラクタです\n";
}
// No.2
Class1::Class1(string name)
{
cout << "コンストラクタのオーバーロードです\n";
this->name = name;
}
void Class1::print1()
{
cout << name << "print1の1番目の表示\n";
return;
}
3.定義したコンストラクタを使用する (test1.cpp)
定義したコンストラクタを使用しているファイルです。
| No. | 説明 |
|---|---|
| 1 | 5行目は、Class1からclaというオブジェクトを生成しています。 オブジェクトを生成するとclass1.cppの5-8行目が実行されます。 |
| 2 | 8行目は、Class1からcla2というオブジェクトを生成し引数を渡しています。 オブジェクトを生成するとclass1.cppの10-14行目が実行されます。 9行目は、メンバ関数を呼び出しています。8行目で渡した引数とclass1.cppの17行目の文字列を表示します。 |
#include "Class1.h"
int main() {
// No.1
Class1 cla;
// No.2
Class1 cla2("引数です=");
cla2.print1();
return 0;
}
結果
実行すると以下のように表示されます。
コンストラクタです
コンストラクタのオーバーロードです
引数です=print1の1番目の表示
関連の記事