2013年8月3日土曜日

クラスとメンバ関数を定義してみる

今回はクラスとメンバ関数の定義方法をご紹介いたします^^

クラスを定義するとは、クラスの内容を記述することです。
ここでは 「ももの箱」 を例に定義をしてみます。

class PeachBox {  //クラス名
public:
    void Add(int addpeach);  //Add, Del, Empty, GetTotalの4つはメンバ関数
    void Del(int delpeach);
    void Empty();
    int GetTotal();
private:
    int m_total;  //メンバ変数 であることを明示するために m_ をつけること分かりやすい
}; 

ももの箱クラス(PeachBox)は、箱の中に入っているももの数を管理するクラスです。
メンバ関数GetTotal()で、箱の中にあるももの数を求めることができます。


メンバ関数を定義してみる
メンバ関数の定義の仕方は、普通に使う関数とほぼ同じようにできます。
違いと言えば、関数名の前に「クラス名::」をつけて、どのクラスのメンバ関数であるかを
記述することです。 以前少し学習した名前空間のことを思い出してください。^^

void PeachBox::Add(int addpeach)     //クラス名:: この場合はPeachBox::がついています
{
    m_total += addpeach;         //メンバ変数に追加する桃の数を加える
}

メンバ関数の名前は、そのクラスの中だけで有効です。
クラスの外からは見えないように隠蔽(カプセル化という)されているのです(^_^.)
そのため、クラスの外側(普通の関数)や別のクラスでは同じ名前の関数を定義することができます。

メンバ関数はクラスの中で定義することもできます。
その場合は、クラスの定義をしているところで関数の中身を記述します。

class PeachBox{
public:
    void Add(int addpeach);
    void Del(int dellpeach);
    void Empty();
    int GetTotal() {      //クラスの宣言と同時に中身を定義
        return m_total;   
    }
private:
    int m_total;
}

このように、クラスの中で関数の中身を定義した関数を、インライン関数と呼びます。


今日の名言
自分の欠点ばかり気になりだしたら、そんな劣等感を直してくれる人間はこの世に一人しかいない。
つまりあなた自身だ。直し方は次の言葉に尽きる。-「おのれ自身のことを忘れよ」恥ずかしくなって
きたり、気後れしたり、自分が気になりだしたら、すぐその場で何か他のことを考えることだ。人と語り合う際には、話題以外のことは一切念頭には置かない。相手がこちらのことをどう思っていようが、
こちらの話しぶりをどう思っていようが、決して気にしないことだ。自分のことは忘れて、
先を続けることだ。
                                         デール・カーネギー


財産を失っても痛手は少ない。だが、健康を損なうと痛手は大きい。
勇気を失うと、それこそ取り返しがつかない。
                                         作者不明

恐怖の数のほうが、危険の数より常に多い。
                                         セネカ