C++のクラスのサンプルです。
目次
以降は、説明用として3つのファイルがあります。(class1.h、class1.cpp、test1.cpp)
1.クラスを定義する (class1.h)
クラスを定義しているファイルです。
クラスの定義は一般的にヘッダファイルで行います。ヘッダファイルの拡張子は.hです。
| No. | 説明 |
|---|---|
| 1 | 6行目は、privateを指定しています。privateが指定されているとクラスの外部からアクセスすることができません。(非公開の設定) 7行目は、メンバ変数です。 |
| 2 | 9行目は、publicを指定しています。publicが指定されているとクラスの外部からアクセスすることができます。(公開の設定) 10,11行目は、メンバ関数のプロトタイプ宣言です。 プロトタイプ宣言とは、戻り値の型、関数名、引数の型をコンパイラに知らせることです。 メンバ関数の処理の記述は、class1.cppにあります。 メンバ関数とはJavaでいうメソッドにあたります。 |
| 3 | 13行目は、ブロックの後にセミコロンが必要です。 ブロックとは波かっこ( { } )を指します。 |
#include <string>
using namespace std;
class Class1
{
// No.1
private:
string name; //メンバ変数
// No.2
public:
void print1(); //メンバ関数のプロトタイプ宣言
void print2(); //メンバ関数のプロトタイプ宣言
// No.3
};
2.メンバ関数を実装する (class1.cpp)
メンバ関数を実装しているファイルです。
メンバ関数とはJavaでいうメソッドにあたります。
メンバ関数の処理内容を記述することを「メンバ関数を実装する」といいます。
| No. | 説明 |
|---|---|
| 1 | 6行目は、class1.hの10行目のメンバ関数の処理内容を記述しています。 構文は以下のとおりです。 void Class1::print1() 戻り値のデータ型 クラス名::メンバ関数名(引数のデータ型 引数) →引数は無しで戻り値もなし 8行目のメンバ変数の定義は、class1.hの7行目にあります。 |
| 2 | 14行目は、class1.hの11行目のメンバ関数の処理内容を記述しています。 |
#include "Class1.h"
#include <iostream>
using namespace std;
// No.1
void Class1::print1()
{
name = "print1";
cout << name << "が処理されました1\n";
return;
}
// No.2
void Class1::print2()
{
name = "print2";
cout << name << "が処理されました1\n";
return;
}
3.クラスを使用する (test1.cpp)
クラスのオブジェクト(インスタンス)を生成してメンバ関数を使用しているファイルです。
| No. | 説明 |
|---|---|
| 1 | 6行目は、クラスのオブジェクト(インスタンス)を生成しています。 (Class1型のclaというオブジェクトを生成) |
| 2 | 9,10行目は、クラスのメンバ関数です。class1.cppのprint1()とprint2()を呼び出しています。 |
#include "Class1.h"
int main() {
// No.1
Class1 cla;
// No.2
cla.print1();
cla.print2();
return 0;
}
結果
実行すると以下のように表示されます。
print1が処理されました1
print2が処理されました1
関連の記事