コンストラクタ
コンストラクタとは、クラスのオブジェクト作成において初期化を行うための特別な関数のこと
初期値を代入する役割を担う
コンストラクタはクラス名と同じ名前にする
コンストラクタの構文
class クラス名 {
public:
型1 メンバ変数1
型2 メンバ変数2
...
// メンバ変数1を初期化するコンストラクタ
クラス名(型a 引数a) {
メンバ変数1 = 引数a
}
// 複数のメンバ変数を初期化するコンストラクタ
クラス名(型a 引数a, 型b 引数b, ...) {
メンバ変数1 = 引数a
メンバ変数2 = 引数b
...
}
}
コンストラクタを用いたプログラム
#include <iostream>
using namespace std;
class Student {
public:
string name;
int score;
Student(string str) {
name = str;
}
Student(string str, int x) {
name = str;
score = x;
}
};
int main() {
Student Taro("Taro");
cout << Taro.name << endl;
Student Jiro("Jiro", 100);
cout << Jiro.name << endl;
cout << Jiro.score << endl;
}
Taro
Jiro
100
デストラクタ
オブジェクトが破棄されるときに自動的に実行される関数
デストラクタはチルダ記号を使って~クラス名
と定義する
デストラクタの用途
- 動的に確保したメモリの解放
- ファイルのクローズ処理
デストラクタの構文
~クラス名(){
// デストラクタの処理
}
デストラクタを用いたプログラム
#include <iostream>
using namespace std;
class Student {
public:
Student(){
cout << "コンストラクタの処理" << endl;
}
~Student(){
cout << "デストラクタの処理" << endl;
}
};
int main() {
Student student;
return 0;
}
コンストラクタの処理
デストラクタの処理
コピーコンストラクタ
オブジェクトをコピーしたときに実行される関数
コピーコンストラクタの構文
クラス名(const クラス名 &引数) {
// コピーコンストラクタの処理
}
コピーコンストラクタを用いたプログラム
#include <iostream>
using namespace std;
class Student {
public:
Student(){
cout << "コンストラクタの処理" << endl;
}
Student(const Student &obj){
cout << "コピーコンストラクタの処理" << endl;
}
};
int main() {
Student Taro;
Student Jiro = Taro;
return 0;
}
コンストラクタの処理
コピーコンストラクタの処理