スポンサードリンク
HOME > C++言語 > クラス定義・実装の記述方法

C++言語 - クラス定義・実装の記述方法

通常、クラスのメンバ変数やメンバ関数の定義と実装は、

ヘッダファイル(***.hソースファイル(***.cppに分割します。

極端に小さい機能しか持たないクラスの場合は、

ヘッダファイルのみに定義、実装を記述する事もできます。

ここでは、分割した場合と、分割せず、ヘッダファイルにのみ記述した例を示します。

ヘッダファイルとソースファイルに分割した記述例

ファイル名:hito.h
class hito {
public:
int age;
int sinchou;
int taiju;

void show_age();
void show_sinchou();
void show_taiju();

};


ファイル名:hito.cpp
#include <iostream>
#include "hito.h"

using namespace std;

void hito::show_age() {
   cout << "年齢は" << age << "です。" << '\n';
}

void hito::show_sinchou() {
   cout << "身長は" << sinchou << "です。" << '\n';
}

void hito::show_taiju() {
   cout << "体重は" << taiju << "です。" << '\n';
}


この例では、クラスhitoの定義と実装を

ヘッダファイル(hito.h)とソースファイル(hito.cpp)に分割した例です。

ヘッダファイル(hito.h)には、メンバ変数の定義、メンバ関数のプロトタイプ宣言を

記述しています。

一方、ソースファイル(hito.cpp)では、クラスhitoのメンバ関数の実装を

記述しています。

まず始めに、クラスhitoの定義を記述したヘッダファイル(hito.h)をインクルードします。

メンバ関数の実装は、メンバ関数名の前にクラス名::(スコープ解決演算子)

つけてこの関数がクラスhitoのメンバ関数であることを明記しなければなりません。

あとは、通常通りの記述が行えます。

ヘッダファイルのみにクラスを定義・実装した記述例

ファイル名:hito.h
#include <iostream>

using namespace std;

class hito {
public:
int age;
int sinchou;
int taiju;

void show_age() {
   cout << "年齢は" << age << "です。" << '\n';
}

void show_sinchou() {
   cout << "身長は" << sinchou << "です。" << '\n';
}

void show_taiju() {
   cout << "体重は" << taiju << "です。" << '\n';
}

};


この例は、クラスhitoの定義と実装を

ヘッダファイル(hito.h)だけに記述した例です。

ヘッダファイル内に、メンバ変数の定義、メンバ関数の定義、実装を記述しています。

分割した場合と比べて、メンバ関数のプロトタイプ宣言をする必要はありません。

ですが、関数の実装が大きければ、ヘッダファイル内の記述が煩雑になってしまうので、

オススメできません。

また、静的メンバ変数静的メンバ関数を扱う事はできない記述方法です。



まとめとして、ヘッダファイルには、クラスメンバの定義だけに留めておき、

ソースファイルに実装を記述するのが、あらゆる事例に対応できる書き方です。

また、実装するソースファイルは複数あっても問題ありません。

例えば、クラスhitoの場合、

メンバ関数show_ageの実装をソースファイル(hito1.cpp)に、

メンバ関数show_sinchouの実装をソースファイル(hito2.cpp)に、

メンバ関数show_taijuの実装をソースファイル(hito3.cpp)に分割する事ができる。

と言う事です。

クラスが膨大になった場合、このように分割すると管理しやすくなるでしょう。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved