はじめに
オブジェクト指向プログラミング(OOP)の中心的な概念が「クラス (class
)」です。クラスは、現実世界の「モノ」が持つ**状態(データ)と振る舞い(機能)**を、プログラムの中で一つのまとまりとして表現するための「設計図」と考えることができます。
例えば、「犬」というクラスを考えるなら、
- 状態(データメンバ): 名前、年齢、犬種
- 振る舞い(メンバ関数): 吠える、走る、尻尾を振る
といった要素を一つにまとめます。そして、この「犬」という設計図から、「ポチ」や「ハチ公」といった、具体的な**実体(オブジェクト)**を作成して利用します。
この記事では、C++におけるクラスの基本的な定義方法と、そのクラスからオブジェクトを作成して利用するまでの流れを解説します。
クラスの定義と利用のサンプルコード
このコードは、Dog
(犬)というクラスを定義し、そのクラスから myDog
というオブジェクトを作成して、そのメンバ変数に値を設定したり、メンバ関数を呼び出したりします。
完成コード
#include <iostream>
#include <string>
using namespace std;
// --- 1. クラスの定義 (設計図) ---
class Dog {
public: // 外部からアクセス可能なメンバ
// データメンバ(メンバ変数)
string name;
int age;
// メンバ関数
void bark(); // 吠える
};
// メンバ関数の実装
void Dog::bark() {
cout << name << "は「ワン!」と吠えた。" << endl;
}
int main() {
// --- 2. クラスからオブジェクト(実体)を作成 ---
Dog myDog;
// --- 3. オブジェクトのメンバ変数に値を設定 ---
myDog.name = "ポチ";
myDog.age = 3;
// --- 4. オブジェクトのメンバを参照 ---
cout << "私の犬の名前は " << myDog.name << " です。" << endl;
// --- 5. オブジェクトのメンバ関数を呼び出す ---
myDog.bark();
return 0;
}
実行結果
私の犬の名前は ポチ です。
ポチは「ワン!」と吠えた。
コードの解説
1. クラスの定義
class Dog { ... };
class
キーワードを使って、Dog
という新しいデータ型を定義しています。
public:
: アクセス指定子です。ここに記述されたメンバは、クラスの外部からアクセスできます。- データメンバ:
name
やage
のように、クラスが持つデータ(状態)を定義する変数です。 - メンバ関数:
bark()
のように、クラスが持つ機能(振る舞い)を定義する関数です。
2. オブジェクトの生成
Dog myDog;
main
関数の中で、定義した Dog
型(設計図)を使って myDog
という名前の**変数(オブジェクト)**を作成しています。この myDog
が、メモリ上に存在する「実体」です。
3. メンバへのアクセス
myDog.name = "ポチ";
オブジェクトのメンバにアクセスするには、構造体と同様にドット演算子 (.
) を使います。オブジェクト名.メンバ名
という構文で、メンバ変数の値を読み書きしたり、メンバ関数を呼び出したりできます。
まとめ
今回は、C++のクラスの最も基本的な概念について解説しました。
- クラス (
class
): データ(メンバ変数)と機能(メンバ関数)を一つにまとめた、オブジェクトの設計図(型)。 - オブジェクト: クラスという設計図から作られた、メモリ上の実体(変数)。
オブジェクト名.メンバ名
で、オブジェクトの機能やデータを利用する。
この「モノ」に着目して、そのデータと機能をひとまとめにする、というクラスの考え方が、オブジェクト指向プログラミングの第一歩です。