🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
アクセス指定子がpublicに設定されているクラスのメンバ変数、メンバ関数にはmain関数内からアクセスすることができます
アクセス指定子がpublicに設定されているクラスのメンバ変数、メンバ関数には💖外部(main関数内、別のクラス)💖からアクセスすることができます
アクセス指定子がpublicに設定されているクラスのメンバ変数、メンバ関数にはmain関数内からアクセスすることができます
ソーラー「
プロトタイプオブジェクト=対象としてみるモノ
を
ゲームキャラクターとします
そして
ゲームキャラクターのデータを取り扱う
クラス GameCharacterとそのメンバ関数statusDataDisplay()の定義をご覧ください」
👇
class GameCharacter {
public:
string name;
int HP;
int MP;
public:
void statusDataDisplay();
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
ソーラー「このクラスでは
クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
のアクセス指定子が
🌞public🌞
に設定されています
このように アクセス指定子publicが記述されている場合
👇
class GameCharacter {
public://👈アクセス指定子publicに御注目下さい
string name;
int HP;
int MP;
public:
void statusDataDisplay();
};
👆
アクセス指定子publicは
クラスGameCharacterのメンバ変数宣言
string name;
int HP;
int MP;
にかかってくるのでしたね
もちろん
クラスGameCharacterのメンバ関数宣言
void statusDataDisplay();
の
アクセス指定子は
public ですね
このクラス GameCharacterと
そのメンバ関数statusDataDisplay()の定義
が用いられたプログラムをご覧ください」
👇
#include <iostream>
#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています
using namespace std;
class GameCharacter {
public:
string name;
int HP;
int MP;
public:
void statusDataDisplay();
};
void GameCharacter::statusDataDisplay() {
cout << name << "\n";
cout << "HP " << HP << "\n";
cout << "MP " << MP << "\n";
}
int main() {
GameCharacter Lyliane;
Lyliane.name = "リリアーネ";//👈🌞ここに注目🌞
Lyliane.HP = 10;//👈🌞ここに注目🌞
Lyliane.MP = 8;//👈🌞ここに注目🌞
Lyliane.statusDataDisplay();
return 0;
}
プログラムの実行結果
リリアーネ
HP 10
MP 8
ソーラー「このプログラムでは
main関数内で
GameCharacter Lyliane;
を実行して
プロトタイプオブジェクトであるリリアーネという名前のゲームキャラクターのデータを取り扱うための
GameCharacter型のオブジェクトLyliane
を生成しています
そして
つづく命令文
Lyliane.name = "リリアーネ";//👈🌞ここに注目🌞
Lyliane.HP = 10;//👈🌞ここに注目🌞
Lyliane.MP = 8;//👈🌞ここに注目🌞
の部分に御注目下さい
クラス GameCharacterの
メンバ変数宣言のアクセス指定子が
publicに設定されていると
🌞main関数内で🌞
GameCharacter Lyliane;
を実行して
オブジェクトLylianeを作製した場合
生成される
オブジェクトLylianeのメンバ変数
Lyliane.name
Lyliane.HP
Lyliane.MP
に
直接
データを代入することができます
すなわち
Lyliane.name = "リリアーネ";//👈🌞ここに注目🌞
Lyliane.HP = 10;//👈🌞ここに注目🌞
Lyliane.MP = 8;//👈🌞ここに注目🌞
を実行しても
🌞ビルドエラーが生じることはありません🌞
このことを
クラス GameCharacterのメンバ変数に
🌞main関数内🌞
からアクセスすることができる
または
🌞クラスの外部🌞
からアクセスすることができる
といいます
🌞オブジェクトLyliane🌞
は
クラスGameCharacterのメンバ変数
name
HP
MP
にアクセスしていますが
Lyliane.name = "リリアーネ";//👈🌞ここに注目🌞
Lyliane.HP = 10;//👈🌞ここに注目🌞
Lyliane.MP = 8;//👈🌞ここに注目🌞
が記述されている
🌞場所🌞
は
クラスGameCharacter内ではなく
main関数の中ですね
ですから
クラスGameCharacterのメンバ変数
name
HP
MP
に
main関数内(クラスの外部)
から
アクセスできるといいます
また
クラス GameCharacterの
メンバ関数宣言のアクセス指定子が
publicに設定されているので
main関数内で
GameCharacter Lyliane;
を実行して
オブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay();
を生成し
オブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay();
を実行することができます
Lyliane.statusDataDisplay();
が記述されていても
🌞ビルドエラーが生じることはありません🌞
このことを
クラスGameCharacterのメンバ関数
statusDataDisplay()
に
main関数内(クラスの外部)
から
アクセスできるといいます
オブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay();
が記述されている
🌞場所🌞
は
クラスGameCharacter内ではなく
main関数の中ですね
ですので
クラスGameCharacterのメンバ関数
statusDataDisplay()
に
main関数内(クラスの外部)
から
アクセスできるというわけです
また
クラス GameCharacterの
メンバ変数宣言のアクセス指定子が
publicでなくprivateに設定されていると
main関数内で
GameCharacter Lyliane;
を実行して
オブジェクトLylianeを作製しても
Lyliane.name = "リリアーネ";
Lyliane.HP = 10;
Lyliane.MP = 8;
のように
オブジェクトLylianeのメンバ変数
Lyliane.name
Lyliane.HP
Lyliane.MP
に
直接データを代入することはできません
Lyliane.name = "リリアーネ";
Lyliane.HP = 10;
Lyliane.MP = 8;
が記述されていると
🌞ビルドエラーが生じることになります🌞
このことを
クラス GameCharacterのメンバ変数に
🌞main関数内🌞
からアクセスすることができない
または
🌞クラスの外部🌞
からアクセスすることができない
といいます
🌞オブジェクトLyliane🌞
は
クラスGameCharacterのメンバ変数
name
HP
MP
にアクセスできないわけですが
このときの
Lyliane.name = "リリアーネ";//👈🌞ここに注目🌞
Lyliane.HP = 10;//👈🌞ここに注目🌞
Lyliane.MP = 8;//👈🌞ここに注目🌞
が記述されている
🌞場所🌞
は
クラスGameCharacter内ではなく
main関数の中ですね
ですので
クラスGameCharacterのメンバ変数
name
HP
MP
に
main関数内(クラスの外部)
から
アクセスできないといいます
さらに😊さらに😊
もし
クラスGameCharacterの
メンバ関数宣言のアクセス指定子が
privateに設定されていれば
main関数内で
GameCharacter Lyliane;
を実行したのち
オブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay();
を実行することもできません
ビルドエラーが生じることになります
このことを
クラス GameCharacterのメンバ関数statusDataDisplay()に
🌞main関数内🌞
からアクセスすることができない
または
🌞クラスの外部🌞
からアクセスすることができない
といいます
このとき
オブジェクトLylianeのメンバ関数
Lyliane.statusDataDisplay();
が記述されている
🌞場所🌞
は
クラスGameCharacter内ではなく
main関数の中ですね
ですので
クラスGameCharacterのメンバ関数
statusDataDisplay()
に
main関数内(クラスの外部)
から
アクセスできないというわけです」
マックス「なるほどな😊
ようは
オブジェクトをとおして
クラスのメンバ変数
クラスのメンバ関数に
にアクセスするとき
オブジェクトのメンバ変数
オブジェクトのメンバ関数
が記述されている場所が
クラスの内部でなく
main関数内(クラスの外部)なら
main関数内(クラスの外部)から
クラスのメンバ変数
クラスのメンバ関数に
アクセスしているといえるわけだ」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます