C++のクラスとオブジェクトとは?基本概念と定義方法を初心者向けに解説
クラスは、C++における最も重要な機能の一つです。オブジェクト指向プログラミング(OOP)の中核となる概念を実現するためのユーザー定義型であり、データ変数と、そのデータを操作するための関数を1つのパッケージにまとめることができます。クラスは、オブジェクトの設計図(仕様)を提供する役割を担います。
クラスの定義方法
クラスの定義は「class」キーワードから始まり、その後にクラス名を記述します。続いて、波括弧({})で囲まれたクラス本体を定義し、末尾に必ずセミコロン(;)を付けます。
C++におけるクラス定義の基本的な例は以下の通りです。
class Student {
int rollno;
char name[50];
float marks;
};このクラスには、学生に関する情報として、出席番号(rollno)、名前(name)、点数(marks)が格納されています。
オブジェクトの定義方法
クラスを定義した時点では、それはあくまで「仕様」にすぎず、メモリやストレージは一切割り当てられません。クラス内で定義されたデータや関数を実際に利用するには、クラスからオブジェクトを生成する必要があります。このことから、クラスはしばしば「オブジェクトの設計図」と呼ばれます。
Studentクラスのオブジェクトを宣言する例は次のようになります。
Student stu1;
クラスとオブジェクトのサンプルプログラム
以下は、C++におけるクラスとオブジェクトの基本的な使い方を示す完全なサンプルプログラムです。
#include <iostream>
using namespace std;
class Student {
public:
int rollno;
char name[50];
float marks;
void display() {
cout<<"Roll Number: "<< rollno <<endl;
cout<<"Name: "<< name <<endl;
cout<<"Marks: "<< marks <<endl;
}
};
int main() {
Student stu1 = {1, "Harry", 91.5};
stu1.display();
return 0;
}実行結果
Roll Number: 1 Name: Harry Marks: 91.5
プログラムの解説
上記のプログラムでは、まずStudentクラスを定義しています。このクラスには、出席番号・名前・点数といった学生の詳細情報がメンバ変数として含まれており、さらにそれらの情報をすべて表示するメンバ関数display()が定義されています。
該当するコード部分を抜き出すと、次のようになっています。
class Student {
public:
int rollno;
char name[50];
float marks;
void display() {
cout<<"Roll Number: "<< rollno <<endl;
cout<<"Name: "<< name <<endl;
cout<<"Marks: "<< marks <<endl;
}
};ここで注目すべきは、public:というアクセス指定子です。これにより、クラス外からもメンバ変数やメンバ関数にアクセスできるようになります。publicを指定せずに宣言すると、デフォルトではprivate扱いとなり、外部からの直接アクセスは禁止されます。
続いて、main()関数内でStudentクラスのオブジェクトstu1を生成し、学生の詳細情報を設定しています。その後、display()関数を呼び出すことで、設定した情報が画面に出力されます。
Student stu1 = {1, "Harry", 91.5};
stu1.display();このように、すべてのメンバがpublicである場合、波括弧を使った初期化(集成体初期化)によってオブジェクトを一括で初期化できます。なお、実務ではメンバ変数をprivateにしてカプセル化を行い、コンストラクタやセッター経由で値を設定するのが一般的な設計手法です。
-
C++のフレンド関数とフレンドクラスの基本を解説
C++におけるフレンド関数(friend function)とは、クラスのスコープ外で定義される関数でありながら、そのクラスのすべてのprivateメンバーおよびprotectedメンバーにアクセスする権限を持つ特別な関数です。フレンド関数のプロトタイプ(宣言)はクラス定義の中に記述しますが、あくまで「友達」として扱われるだけであり、クラスのメンバー関数にはなりません。この点は重要なポイントです。フレンドとして指定できるものフレンドとして宣言できるのは、以下のようなものです。通常の関数関数テンプレート他のクラスのメンバー関数クラス全体(この場合、そのクラスのすべてのメンバーがフレンドになります
-
C++の記憶クラス(ストレージクラス)とは?auto・static・externなどの5種類を解説
C++プログラミングにおいて、記憶クラス(ストレージクラス)とは、変数や関数のスコープ(可視性)と寿命(ライフタイム)を定義するための指定子です。記憶クラス指定子は、修飾対象となる型の前に記述します。C++プログラムで使用できる記憶クラスには、以下の5種類があります。 auto register static extern mutable auto:自動記憶域期間 auto記憶クラス指定子は、自動記憶域を持つ変数を明示的に宣言するためのものです。ブロック内で宣言された変数のデフォルトはautoであり、自動記憶域を持つ変数xは、xが宣言されたブロックを抜けると破棄されます。 auto指定子は