ここからは実際に何かのクラスを作る事で新しい事を説明しましょう。
最初にサンプルとして作るのは銀行のATMのクラスです。
あまり複雑なクラスにすると長くなるだけですので、少しずつ作ります。
また、ATMの機能を全て盛り込むなど考えていません。
最低限の事(預け入れ、引き出し、残高照会)が出来れば良いです。
何を作るにしても、まず必要なデータから考えます。
今回は最低限のデータで構いませんので、「残高」だけ用意します。
<sample program cpp050-01>
#include <iostream> class ATM { public: private: int m_balance; }; int main() { return 0; } |
ここからデータ操作のため、メンバ関数を追加していきます。
どれから作っても良いのですが、1つ決めておかなければならない事があります。
残高(balance)の初期値は何円で、どこで設定するのか?
現実で初めて銀行口座を作る時にはいくらかお金を入れておかなければなりませんが、今回は0円という事にしておきましょう。
初期化する方法ですが、何通りかの方法があります。
今回はコンストラクタ関数を使った初期化の方法を紹介します。
クラスにはコンストラクタ関数という特殊な関数があります。
コンストラクタ関数は、
クラスが実体を持った時、自動的に呼び出される関数
です。
特殊な関数なので、次の特徴があります。
・関数名はクラス名と同じ ・戻り値は無し(voidではなく無い) ・引数は渡せる |
今回は引数は使いませんので、まずは宣言だけ書きましょう。
<sample program cpp050-02>
#include <iostream>
class ATM {
public:
ATM();
private:
int m_balance;
};
int main()
{
return 0;
}
|
関数名はクラスと同じATM、戻り値は書きません。
次にコンストラクタ関数本体を追加します。
<sample program cpp050-03>
#include <iostream>
class ATM {
public:
ATM();
private:
int m_balance;
};
int main()
{
return 0;
}
ATM::ATM() : m_balance(0)
{
}
|
所属の後ろに関数名を書きます。
その後ろに「:」を付け、初期化したいメンバ変数の名前と括弧内に初期値を書きます。
これを「初期化リスト」とか「メンバイニシャライザ」と言います。
これで、メンバ変数balanceに初期値「0」が入ります。
その他の方法については、コラム「メンバ変数の初期化」に書きます。
では、残高照会の関数を追加しましょう。
残高を照会するだけなので、単純に残高を表示するプログラムにします。
<sample program cpp050-04>
#include <iostream> class ATM { public: ATM(); void ShowBallance() const; private: int m_balance; }; int main() { return 0; } ATM::ATM() : m_balance(0) { } void ATM::ShowBallance() const { std::cout << "残高は" << m_balance << "円です。" << std::endl; } |
残高を表示するだけなので、忘れずに「const」を付けましょう。
この関数を呼び出してみましょう。
ATMクラスを実体化してShowBalance関数を呼び出します。
<sample program cpp050-05>
#include <iostream>
class ATM {
public:
ATM();
void ShowBallance() const;
private:
int m_balance;
};
int main()
{
ATM ufj;
ufj.ShowBallance();
return 0;
}
ATM::ATM() : m_balance(0)
{
}
void ATM::ShowBallance() const
{
std::cout << "残高は" << m_balance << "円です。" << std::endl;
}
|
<実行結果>
残高は0円です。 続行するには何かキーを押してください・・・
ちゃんと初期値が入っている事が確認出来ました。
続きは次回にしましょう。