{ } 初期化を復習する クラスは、自分だけのデータ(状態) を持つことができます。 たとえば「銀行口座」を考えると、残高(balance) があり、 それを 増やしたり減らしたり する操作が必要です。
これをオブジェクトで表すと、こんなイメージになります。
BankAccount myAccount ├─ name = "山田" ├─ balance = 10000 ├─ deposit() → 残高を増やす └─ withdraw() → 残高を減らす
目的: クラスの内部データを、メンバ関数で操作してみよう。
#include <iostream> #include <string> using namespace std; class BankAccount { public: string name; int balance; // コンストラクタ BankAccount(string n, int b) { name = n; balance = b; } // 残高を表示 void show() { cout << name << " さんの残高は " << balance << " 円です。" << endl; } // 入金 void deposit(int yen) { balance += yen; cout << yen << " 円を入金しました。" << endl; } // 出金(残高チェック付き) void withdraw(int yen) { if (yen > balance) { cout << "残高不足です。" << endl; } else { balance -= yen; cout << yen << " 円を出金しました。" << endl; } } }; int main() { // (1)丸かっこ初期化 BankAccount a("山田", 10000); // (2)中かっこ { } 初期化(統一初期化) BankAccount b{"佐藤", 5000}; a.show(); a.deposit(2000); a.withdraw(5000); a.show(); cout << endl; b.show(); b.withdraw(8000); // 残高不足の例 b.deposit(3000); b.show(); }
実行結果
山田 さんの残高は 10000 円です。 2000 円を入金しました。 5000 円を出金しました。 山田 さんの残高は 7000 円です。 佐藤 さんの残高は 5000 円です。 残高不足です。 3000 円を入金しました。 佐藤 さんの残高は 8000 円です。
ポイント
deposit() で内部の変数 balance を直接操作できる。 withdraw() は条件を確認してから残高を減らす。 () と中かっこ { } の初期化、どちらでもOK。 BankAccount a ├─ name = "山田" ├─ balance = 7000 ├─ deposit(2000) └─ withdraw(5000)
それぞれの口座(オブジェクト)は、自分だけの残高(状態) を持っています。
口座に金利をつける機能を追加しよう。
次の仕様でクラスを完成させよ。
// クラス名: BankAccount // - メンバ変数: name, balance // - コンストラクタ: 名前と初期残高を設定 // - メンバ関数: // 1. deposit(int yen) … 入金 // 2. withdraw(int yen) … 出金(残高不足なら警告) // 3. addInterest(double rate) … 金利を適用する(例:rate=0.05 → 残高×1.05) // 4. show() … 現在の残高を表示 // // main()で以下の動作を確認せよ: // ・口座を2つ作る(丸かっこ版と中かっこ版で) // ・入金・出金・金利加算を実行する // // 出力例: // 山田 さんの残高は 10000 円です。 // 2000 円を入金しました。 // 金利 5% を適用しました。 // 山田 さんの残高は 12600 円です。
ヒント
balance = balance * (1 + rate); で金利を加算できる。 double を使う。 int に丸めたいときは (int) キャストを試してもよい。| 覚えるポイント | 内容 |
|---|---|
| オブジェクトの「状態」 | メンバ変数に保存されるデータ |
| 状態を変える関数 | メンバ関数内で変数を書き換える |
if 文 | 条件によって動作を分ける |
| 丸かっこ/中かっこ初期化 | どちらもOK。中かっこは統一初期化 |
| クラスの使い方 | 設計(定義) → 生成 → 操作 |
📘 次回のステップ → 第4章では「Vector2Dクラス」を作り、2次元の位置や長さなどの計算を行うメソッドを学びます。