クラスを作ってみる
メンバー関数はどこにかけば良いでしょうか?
方法は二つあります。
クラス宣言の中と外です。当たり前ですね。
クラス宣言の中に書く方法は、
クラス宣言内に関数を記述する ---------------
class nantara{ // クラス宣言
private // private メンバ宣言
char *name;
public
void dispname(); // publicメンバ宣言
void dispname() // メンバ関数本体
{
cout << name;
}
}
外に書く方法は
クラス宣言外に関数を記述する ---------------
class nantara{ // クラス宣言
private // private メンバ宣言
char *name;
public
void dispname(); // publicメンバ宣言
}
void nantara::dispname() // メンバ関数本体
{
cout << name;
}
違いは関数の定義部分の
1 void dispname() // メンバ関数本体
2 void nantara::dispname() // メンバ関数本体
の書き方です。
ウィンドウズのメンバ関数の説明ではみんな2の表記のしかたなので自分のクラスも外部で定義するよが良いでしょう。
関数が1〜2個なら問題ありませんが、エディタの何画面分もあるとき、その関数がどのクラスのメンバかすぐわかるのでそのほうが間違いが少なくなると思います。
これでクラスの書き方がわかりました。
まとめると
1 クラスの宣言
2 private メンバの宣言
3 protected メンバの宣言
4 メンバ関数の宣言
5 メンバ関数の記述
という手順ですね。
それぞれ無ければいけないというものではないので必要なものだけ書きます。
上で例をあげた
構造体の例 -----------------
struct partychara{
char *name; // 個人名(ポインタ)
int trib; // 種族 0-12 まである
int age; // 年齢
};
を40行以上のクラスとして説明しました。
しかし以下のようにクラスを作ることもできます。
クラスの例(推奨できない) -----------------
class partychara{
public
char *name; // 個人名(ポインタ)
int trib; // 種族 0-12 まである
int age; // 年齢
};
もうお分かりですね。
すべてのメンバーがpublic なので普通の構造体となんら変わることなくアクセス可能な訳です。
これではもちろん、クラスにする意味はありません。
つまりクラスというのは機能を提供しているだけでその書き方を強制しているわけではないのですね。
Cを拡張してC++にした、というのはこういう事です。
便利に使うのも、不便につかうのもプログラマ次第です。
ですから、いろいろ試して使いこなしましょう。
作った後は使い方です。