C++において、classはオブジェクト指向プログラミングの重要な概念です。
本記事では、C++のclassの基礎から応用までをわかりやすく解説していきます。
C++のclassとは
C++のclassは、オブジェクト指向プログラミングにおいて重要な役割を担っています。
classは、データとそれに関連する操作をまとめたものであり、プログラム内で複数のインスタンスを生成することができます。
例えば、人間を表すデータを含んだclassを作成する場合、名前や年齢などのデータメンバーと、歩く・走る・話すなどの操作メンバーを定義することができます。
class Person {
string name;
int age;
int job;
void Walk(int distance);
void Run(int distance);
void Talk(string message);
};
そして、このclassから複数の人間インスタンスを生成することができます。
int main() {
Person p1;
Person p2;
Person p3;
return 0;
}
classの使い方
C++において、classはオブジェクト指向プログラミングの基本的な概念です。classを使用することで、複数の変数や関数をまとめて扱うことができます。
メンバ変数の定義と呼び出し方
class内で宣言された変数はメンバ変数と呼ばれます。メンバ変数は、通常の変数と同じように宣言することができます。以下は、SampleClassという名前のclass内にint型のメンバ変数を宣言する例です。
class SampleClass {
public:
int sampleVariable;
};
このように宣言されたメンバ変数は、以下のようにして呼び出すことができます。
SampleClass sampleObject;
sampleObject.sampleVariable = 10;
メンバ関数の定義と呼び出し方
class内で宣言された関数はメンバ関数と呼ばれます。
メンバ関数も通常の関数と同じように宣言することができます。以下は、SampleClass
内にprintSample()
という名前のメンバ関数を宣言・実装する例です。
class SampleClass {
public:
void printSample() {
std::cout << "This is a sample function." << std::endl;
}
};
このように宣言されたメンバ関数は、以下のようにして呼び出すことができます。
SampleClass sampleObject;
sampleObject.printSample();
また、通常の関数と同じようにプロトタイプ宣言を行い、別の場所(class内に限る)に実装部分を記述することも可能です。
class SampleClass {
public:
void void printSample();
//...ほかの宣言・定義など
void printSample() {
std::cout << "This is a sample function." << std::endl;
}
};
コンストラクタとデストラクタの定義
コンストラクタは、オブジェクトが生成される際に自動的に呼び出される特殊なメソッドです。デストラクタは、オブジェクトが破棄される際に自動的に呼び出される特殊なメソッドです。
以下は、SampleClass内にコンストラクタ・デストラクタを定義する例です。
#include <iostream>
class SampleClass {
public:
// コンストラクタ
SampleClass() {
std::cout << "コンストラクタが呼ばれました。" << std::endl;
}
// デストラクタ
~SampleClass() {
std::cout << "デストラクタが呼ばれました。" << std::endl;
}
};
int main() {
SampleClass sam;
std::cout << "Hello, World!" << std::endl;
return 0;
}
コンストラクタが呼ばれました。
Hello, World!
デストラクタが呼ばれました。
上記コードは、SampleClassのsam変数を宣言したタイミングでオブジェクトが生成、コンストラクタが呼ばれてコンストラクタが呼ばれました。
と表示されます。
その後Hello, World!
が出力され、main関数が終了してsamがメモリから破棄される直前でデストラクタが呼ばれてデストラクタが呼ばれました。
が表示されます。
コンストラクタ・デストラクタも通常のメソッド同様、public
private
protected
キーワードを用いてアクセス制御を行うことができます。また、引数を取ることも可能です。
以上がC++でclassを定義する方法やその使い方について説明した内容です。