C++のクラスのコンストラクタのサンプルです。
目次
サンプル | コンストラクタ |
コンストラクタのサンプル | |
コンストラクタのオーバーロード |
コンストラクタ
- コンストラクタとはクラスからオブジェクトを生成する時に実行される処理です。
- 初期化処理に使用されます。
- クラス名がコンストラクタの名前(関数名)になります。
→Class1というクラス名であればClass1がコンストラクタの名前になります。
コンストラクタのサンプル
#include <string>
#include <iostream>
using namespace std;
class Class1
{
private:
string name; //メンバ変数
public:
Class1(); //コンストラクタ
};
Class1::Class1()
{
cout << "constructor\n";
}
int main() {
Class1 c1; //constructor
return 0;
}
10行目は、コンストラクタの定義をしています。
19行目は、インスタンスを生成しています。その際に15行目が実行され「コンストラクタです」と表示されます。
コンストラクタのオーバーロード
コンストラクタのオーバーロードは、コンストラクタ名が同じで引数が異なることです。
#include <string>
#include <iostream>
using namespace std;
//
class Color
{
private:
string name; //メンバ変数
public:
Color(); //コンストラクタ
Color(string name); //コンストラクタのオーバーロード
void print(); //メンバ関数のプロトタイプ宣言
};
//
Color::Color()
{
cout << "constructor\n";
}
Color::Color(string name)
{
cout << "constructor overload\n";
this->name = name;
}
void Color::print()
{
cout << name << "\n";
return;
}
int main() {
Color c1; // constructor
Color c2("red"); // constructor overload
c2.print(); // red
return 0;
}
10,11行目は、同じコンストラクタ名(Color)です。違いは引数の数が異なっています。
11行目は、コンストラクタのオーバーロードです。
32行目は、Colorからc2というオブジェクトを生成しています。引数があるので11行目のコンストラクタが実行されます。
関連の記事