🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
親クラス型のオブジェクトのアドレスを親クラス*型のポインタ変数に代入することにより親クラス型のオブジェクトのメンバ変数 、メンバ関数に相当するものをポインタ変数にアロー演算子を用いて表すことができます
int型の変数xにはx=1,x=5のように様々な数値データを代入することができます そのとき変数xをもちいてさまざまな数値データを表すことができますがそのことを多態性(ポリモーフィズム)といいます
親クラス型のオブジェクトのアドレスを親クラス*型のポインタ変数に代入することにより親クラス型のオブジェクトのメンバ変数 、メンバ関数に相当するものをポインタ変数にアロー演算子を用いて表すことができます
ソーラー「みなさん
今日は
🌞 🌞 🌞 🌞 🌞
親クラス型のオブジェクトのアドレスを
親クラス*型のポインタ変数に代入することにより
親クラス型のオブジェクトのメンバ変数
親クラス型のオブジェクトのメンバ関数に相当するものを
親クラス*型のポインタ変数にアロー演算子を用いて
表現することができます。
🌞 🌞 🌞 🌞 🌞
ということを
考察してみたいと思います。」
マックス「なんだ アロー演算子か 久しいな」
ソーラー「まずは次のプログラムをご覧ください」
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
//👇🌞🌞🌞クラスGameCharacterです🌞🌞🌞
class GameCharacter {
public:
string name;
int HP;
int MP;
void statusDataDisplay();
//クラスGameCharacterにはuseFireRecovery(GameCharacter& a)を設定しません
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
//👇🌞🌞🌞クラスGameCharacterを継承したクラスDragonです🌞🌞🌞
class Dragon:public GameCharacter {
public:
void useFireRecovery(GameCharacter& a);
};
void Dragon::useFireRecovery(GameCharacter& a) {
cout << name << "は灼熱のフレアを" << a.name << "に吐いた !" << "\n";
cout << a.name << "は灼熱のフレアを受け燃え上がった!" << "\n";
a.HP += 10;
cout << a.name << "の体力は10回復した" << "\n";
}
int main() {
GameCharacter Lyliane;
//👆Lylianeの親クラスGameCharacter型のオブジェクト宣言をおこなっています
GameCharacter* pta;
//👆GameCharacter*型のポインタ変数ptaを作製しました
pta = &Lyliane;
pta->name = "リリアーネ";
pta->HP = 10;
pta->MP = 8;
pta->statusDataDisplay();
return 0;
}
ビルド実行結果
リリアーネ
HP 10
MP 8
ソーラー「このプログラムでは
Lylianeの親クラスGameCharacter型のオブジェクト宣言
GameCharacter Lyliane;
が実行されています。
そして生成された親クラスGameCharacter型のオブジェクトLylianeのアドレス
&Lyliane
が
ptaのGameCharacter*型のポインタ変数宣言
GameCharacter* pta;
によって作製された
GameCharacter*型のポインタ変数
pta
に代入されています。
すると
Lyliane.name = "リリアーネ";
Lyliane.HP = 10;
Lyliane.MP = 8;
Lyliane.statusDataDisplay();
に相当するものを
GameCharacter*型のポインタ変数
pta
に
アロー演算子を用いた
pta->name = "リリアーネ";
pta->HP = 10;
pta->MP = 8;
pta->statusDataDisplay();
で実行することができるようになります。」
マックス「なるほど
親クラスGameCharacter型のオブジェクトLyliane
のアドレス
&Lyliane
を代入するために
親クラスGameCharacter*型のポインタ変数
pta
を作製したわけだ。
そして
親クラスGameCharacter型のオブジェクトLylianeのメンバ変数
Lyliane.name
Lyliane.HP
Lyliane.MP
親クラスGameCharacter型のオブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay()
は
pta->name
pta->HP
pta->MP
pta->statusDataDisplay()
であらわされるってわけだな。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます