はじめに
C++のオブジェクト指向プログラミングの核となるのが「クラス (class)」です。クラスは、関連するデータ(メンバ変数)と、それらを操作するための一連の関数(メンバ関数)を一つにまとめた、独自のデータ型の「設計図」です。
この記事では、C++におけるクラスの基本的な定義方法と、クラスに属するメンバ関数の処理内容を記述(実装)する2つの主要な方法について、分かりやすく解説します。
クラスの基本的な定義
クラスを定義するには、class キーワードに続けて、任意のクラス名を指定し、ブロック {} の中にメンバを記述します。
// 「商品」クラスの定義
class Product {
public: // 外部からアクセス可能にする
// メンバ変数
int id;
std::string name;
// メンバ関数のプロトタイプ宣言
void display();
};
解説:
class Product { ... };:Productという名前の新しいクラス型を定義しています。構造体と同様に、最後のセミコロン;を忘れないようにしましょう。public:: アクセス指定子と呼びます。public:と書くことで、これ以降に宣言されたメンバが、クラスの外部からアクセス可能になります。void display();: これはメンバ関数の「プロトタイプ宣言」です。ここでは「displayという名前で、引数を取らず、何も値を返さない関数がありますよ」という宣言だけを行い、具体的な処理内容は後で記述します。
メンバ関数の実装方法
方法1: クラスの外で実装する(一般的)
メンバ関数の具体的な処理内容は、クラス定義のブロックの外側に記述するのが一般的です。その際、どのクラスに所属する関数なのかを明示するために、スコープ解決演算子 :: を使います。
サンプルコード
#include <iostream>
#include <string>
using namespace std;
// --- クラスの定義 ---
class Product {
public:
int id;
string name;
// メンバ関数のプロトタイプ宣言
void display();
};
// --- メンバ関数の実装 ---
// Productクラスに所属するdisplay関数であることを :: で示す
void Product::display() {
cout << "商品ID: " << id << endl;
cout << "商品名: " << name << endl;
}
int main() {
Product item1;
item1.id = 101;
item1.name = "高機能マウス";
// メンバ関数を呼び出す
item1.display();
return 0;
}
解説:
void Product::display():関数名(display) の前にクラス名::(Product::) を付けることで、「これはProductクラスのdisplay関数です」とコンパイラに伝えています。- ヘッダーファイルとソースファイル: 実際の開発では、クラスの定義(プロトタイプ宣言まで)をヘッダーファイル(
.hや.hpp)に、メンバ関数の実装をソースファイル(.cpp)に分割して記述するのが一般的です。これにより、コードの管理がしやすくなります。
方法2: クラスの中で実装する(インライン関数)
処理内容が非常に短いメンバ関数に限り、クラス定義のブロックの中で直接、処理を実装することもできます。このように実装された関数は「インライン関数」として扱われます。
サンプルコード
#include <iostream>
#include <string>
using namespace std;
// クラス定義の中でメンバ関数を実装
class Product {
public:
int id;
string name;
// display関数をインラインで実装
void display() {
cout << "商品ID: " << id << endl;
cout << "商品名: " << name << endl;
}
};
int main() {
Product item1;
item1.id = 101;
item1.name = "高機能マウス";
item1.display();
return 0;
}
解説: インライン関数は、呼び出しのオーバーヘッドが少なくなるため、パフォーマンスがわずかに向上する可能性があります。しかし、クラス定義が長くなり可読性が落ちるため、ごく短いゲッター/セッターのような関数に限定して使うのが良いでしょう。
まとめ
今回は、C++のクラス定義と、メンバ関数の2つの実装方法について解説しました。
- クラス (
class) は、メンバ変数とメンバ関数を一つにまとめた設計図。 - メンバ関数は、プロトタイプ宣言をクラス定義内で行い、実装をクラスの外 (
クラス名::関数名) に記述するのが一般的。 - 短い関数であれば、クラス定義内で直接実装するインライン関数も利用できる。
クラスの定義と実装を分離するスタイルは、オブジェクト指向プログラミングにおけるコードの構造化の基本です。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
