🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
クラスのメンバ変数宣言のアクセス指定子がprivateでもメンバ関数宣言がpublicなら オブジェクトのメンバ関数の実行を通してオブジェクトのメンバ変数に格納されている数値を変更することができます。
クラスのメンバ変数宣言のアクセス指定子がprivateでもメンバ関数宣言がpublicなら オブジェクトのメンバ関数の実行を通してオブジェクトのメンバ変数に格納されている数値を変更することができます。
#include <iostream>
using namespace std;
class Cube{
public:
int no;
float tate;
float yoko;
float takasa;
void display(int a, float b, float c, float d);
};
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数displayの定義をおこなっています
/*🌞🌞🌞ここでの注目ポイントはクラスCubeのメンバ関数displayの定義で
no = a;
tate = b;
yoko = c;
takasa = d;
が実行されていることです
Cube cube1;
の実行により
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display(int a, float b, float c, float d)
が作製されます
クラスCubeのメンバ関数displayの引数となっている
int a
float b
float c
float d
に
5
6.0
7.0
8.0
が代入された
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
が実行されると
no = a;
tate = b;
yoko = c;
takasa = d;
が実行されることになり
no
tate
yoko
takasa
は
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を表しているので
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
格納されている数値データは
変数
a
b
c
d
に格納されている数値
5
6.0
7.0
8.0
に変更されることになります。
🌞🌞🌞*/
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
cube1.no = 1;
cube1.tate = 2.0;
cube1.yoko = 3.0;
cube1.takasa = 4.0;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
cube1.display(5,6.0,7.0,8.0);
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
return 0;
}
ビルド実行結果
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
マックス「上記のプログラムでは
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
格納されている数値データ
1
2.0
3.0
4.0
を
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
直接
数値データ
5
6.0
7.0
8.0
を
cube1.no=5;
cube1.tate=6.0;
cube1.yoko =7.0;
cube1.takasa=8.0;
と
代入することなく
cube1.display(5,6.0,7.0,8.0);
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
格納されている数値データを
1
2.0
3.0
4.0
から
5
6.0
7.0
8.0
に変更できたんだ
いい・・・
新しい技をおぼえたな(*´▽`*)」
ソーラー「そう😊
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
直接
数値データを代入する
cube1.no=5;
cube1.tate=6.0;
cube1.yoko=7.0;
cube1.takasa=8.0;
と記述されている部分はみあたらないけど
cube1.display(5,6.0,7.0,8.0);
の実行によって
クラスCubeのメンバ関数の定義
👇
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
の
a
b
c
d
に
5
6.0
7.0
8.0
no
tate
yoko
takasa
に
cube1.no;
cube1.tate
cube1.yoko
cube1.takasa
が代入された
👇
cube1.no=5;
cube1.tate=6.0;
cube1.yoko=7.0;
cube1.takasa=8.0;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
👆
が実行されることになるので
ビルド実行結果は
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
となっているんだね。」
マックス「ということは
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
直接
数値データ
5
6.0
7.0
8.0
を
cube1.no=5;
cube1.tate=6.0;
cube1.yoko=7.0;
cube1.takasa=8.0;
と
代入しなくても
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
を実行すれば
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
数値データ
5
6.0
7.0
8.0
を代入できるわけだ。
ということはだ・・・」
ぶーにゃん「にゃ~ん」
てんC「ぶーにゃんさん、かわいい」
ニャンコ🐈とてんCが戯れている。
ぶーにゃん「にゃ~ん」
マックス「おおっひらめいた🌞
となるとだ・・・
Cubeのクラス宣言とメンバ関数displayの定義
👇
class Cube{
public:
int no;
float tate;
float yoko;
float takasa;
void display(int a, float b, float c, float d);
};
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
で
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子をpublicからprivateに変更するとするだろう。
そのとき
メンバ関数宣言
void display(int a, float b, float c, float d);
に設定されている
アクセス指定子はpublicのままにしておくことにする。
となると
Cubeのクラス宣言とメンバ関数displayの定義は
👇
class Cube{
private:
int no;
float tate;
float yoko;
float takasa;
public:
void display(int a, float b, float c, float d);
};
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
になる
すると
main関数内で
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
をおこなって
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display(int a, float b, float c, float d)
を作製したとしても
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子はpublicからprivateになっているため
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することはできない
そう思うだろう?」
てんC「そうですね」
マックス「だが
メンバ関数宣言
void display(int a, float b, float c, float d);
に設定されている
アクセス指定子はpublicなので
オブジェクトcube1のメンバ関数
cube1.display(int a, float b, float c, float d)
は使用できることになる
このとき
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することはできないので
main関数内で
cube1.no=5;
cube1.tate=6.0;
cube1.yoko=7.0;
cube1.takasa=8.0;
のような命令文を実行すると
ビルドエラーが表示されるはずだ
そう思うだろう?
なあ ソーラーよ😊」
ソーラー「そうですね。
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっているので
Cube cube1;
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を作製しても
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することはできません
ですので
main関数内で
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に直接
数値データを代入することはできなくなっているわけです。」
マックス「だが(*^▽^*)だ。
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっていて
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することができなくても
メンバ関数宣言
void display(int a, float b, float c, float d);
に設定されている
アクセス指定子はpublicなので
💖オブジェクトcube1のメンバ関数💖
💖cube1.display(5,6.0,7.0,8.0);💖
は実行することができるんじゃないかぁ
な(^_-)-☆」
ソーラー「な、ナイスアイデア!」
てんC「その可能性はあります」
マックス「そう思うだろう
cube1.display(5,6.0,7.0,8.0);
が実行できるなら
クラスCubeのメンバ関数displayの定義
👇
void Cube::display(int a, int b, int c, int d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
👆
の
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
が実行される
このとき
クラスCubeのメンバ変数
no
tate
yoko
takasa
は
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
をあらわすことになっていたので
👇
cube1.no = a;
cube1.tate = b;
cube1.yoko = c;
cube1.takasa = d;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
👆
が実行されるはずだよん
int a
float b
float c
float d
には
5
6.0
7.0
8.0
が代入されているので
ビルド結果
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
が表示されるってことになるんじゃないか(*^▽^*)
どうだ?
まあ
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子privateの働きにより
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
は使用できないので
メンバ関数宣言
void display(int a, float b, float c, float d);
のアクセス指定子
が
publicになっていたとしても
cube1.display(5,6.0,7.0,8.0);
は実行できないかもしれないが・・・
だって
cube1.no = a;
cube1.tate = b;
cube1.yoko = c;
cube1.takasa = d;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
👆
が実行されるんだったら
直接ではないが間接的に
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用していることになるからな
」
ソーラー「なるほど
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されているアクセス指定子が
💖private💖
で
クラスCubeのメンバ関数宣言
void display(int a, float b, float c, float d);
のアクセス指定子が
💖public💖
の場合
cube1.display(5,6.0,7.0,8.0);
は
実行できる(´▽`*)?
実行できない( ^ω^)・・・?
どっちなのかな?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます