2017年10月14日
《その78》 クラスに関する基礎事項
単純な貯金プログラムで、クラスに関する基礎事項を確認してみました。
プログラムは、ヘッダ部が "C_01.h",ソース部が "C_01.cpp" と "C_01_test.cpp" の計3つのプログラムで構成されています。
--ヘッダ "C_01.h"-------------------------------
#include <string>
class C_01 {
private:
std::string name00; // 氏名
int crnt_balance; // 貯金額
public:
C_01(std::string name, int c_b); // コンストラクタの宣言(クラス名と同じ名前)
std::string name() { return name00; } // ゲッタ(データメンバ名と同じゲッタ名は不可)
int balance() { return crnt_balance; } // ゲッタ
void deposit(int amnt); // メンバ関数の関数宣言
void withdraw(int amnt); // メンバ関数の関数宣言
};
------------------------------------------------
【メモ】ヘッダ内に using指令を置くべきでない。
using namespace std; を置いてないので string型を std::string と表している。
クラス定義の中で定義されたメンバ関数 string name,balance はインライン関数
【メモ】クラス定義の外で定義されたメンバ関数 deposit,withdraw は非インライン関数
--ソース部 "C_01.cpp"---------------------------
#include "C_01.h"
using namespace std;
C_01::C_01(string name, int balance) { // コンストラクタの定義
name00 = name;
crnt_balance = balance;
}
void C_01::deposit(int x) { // メンバ関数の関数定義
crnt_balance += x;
}
void C_01::withdraw(int x) { // メンバ関数の関数定義
crnt_balance -= x;
}
------------------------------------------------
--ソース部 "C_01_test.cpp"----------------------
#include <string>
#include <iostream>
#include "C_01.h"
using namespace std;
void print_C01(C_01* p) {
cout << "名前 : " << p->name() << ' ' << p->balance() << "円";
// p->balance() は (*p).balance() と同等
}
int main() {
C_01 kyuushuu("九州 太郎", 10000);
kyuushuu.deposit(5000);
print_C01(&kyuushuu); cout << '\n';
}
------------------------------------------------
--
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6849597
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック