🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
クラス型のオブジェクトの配列宣言をおこなった場合 生成されるオブジェクトのメンバ変数,オブジェクトのメンバ関数ともに機能します
クラス型のオブジェクトの配列宣言をおこなった場合 生成されるオブジェクトのメンバ変数,オブジェクトのメンバ関数ともに機能します
マックス「
クラスCubeの配列宣言
Cube cube[3];
を使ったプログラムは次のようになるんだろおおおん(´▽`*)」
#include <iostream>
using namespace std;
class Cube {
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
public:
Cube();
//🌞🌞🌞コンストラクタCube()のメンバ関数宣言を行っています🌞🌞🌞
public:
Cube(int a, float b, float c, float d);
/*🌞🌞🌞コンストラクタCube(int a,float b,float c,float d)のメンバ関数宣言を行っています🌞🌞🌞*/
public:
void display(); //自作関数display()はクラスCubeのメンバ関数とよばれます
};
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
//👆🌞🌞🌞コンストラクタCube()の定義を行っています🌞🌞🌞
Cube::Cube(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
/*👆🌞🌞🌞コンストラクタCube(int a,float b,float c,float d)の定義を行っています🌞🌞🌞*/
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
int main() {
Cube cube[3];
/*🌞🌞🌞配列をつかってクラスCube型のオブジェクト
cube[0]
cube[1]
cube[2]
を作製しています🌞🌞🌞*/
cout << "立方体につけられたナンバーは" << cube[0].no << "です" << "\n";
cout << "立方体の縦の長さは" << cube[0].tate << "です" << "\n";
cout << "立方体の横の長さは" << cube[0].yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube[0].takasa << "です" << "\n";
cout << "立方体につけられたナンバーは" << cube[1].no << "です" << "\n";
cout << "立方体の縦の長さは" << cube[1].tate << "です" << "\n";
cout << "立方体の横の長さは" << cube[1].yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube[1].takasa << "です" << "\n";
cout << "立方体につけられたナンバーは" << cube[2].no << "です" << "\n";
cout << "立方体の縦の長さは" << cube[2].tate << "です" << "\n";
cout << "立方体の横の長さは" << cube[2].yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube[2].takasa << "です" << "\n";
return 0;
}
ビルド実行結果
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
ソーラー「このプログラムでは
クラス型の配列宣言をおこなって
複数のオブジェクトを生成していますが
それぞれの
そのオブジェクトのメンバ変数が代入された
引数を持たないクラスの
略していうと
オブジェクトのコンストラクタが実行されてるんだね。」
マックス「このプログラムでは
引数を持たないコンストラクタの定義
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
の
no
tate
yoko
takasa
に
オブジェクトcube[0]のメンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
が代入された
cube[0].no=0;
cube[0].tate=0.0;
cube[0].yoko=0.0;
cube[0].takasa=0.0;
cube[1].no=0;
cube[1].tate=0.0;
cube[1].yoko=0.0;
cube[1].takasa=0.0;
cube[2].no=0;
cube[2].tate=0.0;
cube[2].yoko=0.0;
cube[2].takasa=0.0;
が実行されている
つまり
引数を持たないコンストラクタの実行により
オブジェクトcube[0]
の
メンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
が
0
0.0
0.0
0.0
に
初期化されているんだな
つま~り
いまさらながらだ!
クラスCube型の配列宣言
Cube cube[3];
を
行った場合
オブジェクトcube[0]
の
メンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
は
ちゃんと
😸生成されてるってわけだな😊」
solarplexuss「はい・・・?
?????
なぜ??? いまさらですか・・・」
てんC「そうですね マックスさん」
ソーラー「順調そのもの だね(^_-)-☆」
マックス「
🌞だがしかし🌞
だ
」
ソーラー「
TVアニメ
🌞だがしかし🌞
みなさん、よろしくお願いしま~す。」
てんC「みなさん、よろしくお願いしま~す。(´▽`*)」
マックス「そう
TVアニメ
🌞だがしかし🌞
\(^o^)/ばんざい\(^o^)/
」
マックス「ふっ しかたがないな・・・
話がそれたようだな( ̄ー ̄)ニヤリ
クラスCube型の配列宣言
Cube cube[3];
を実行すると
オブジェクトcube[0]
オブジェクトcube[1]
オブジェクトcube[2]
が作製され
オブジェクトcube[0]のメンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
が生成されるのはわかる。
そして
👇👇👇
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[0]のメンバ関数は
cube[0].display()
で表されることになる。
そして
cube[0].display();
を実行することができる。
オブジェクトcube[1]のメンバ関数は
cube[1].display()
で表されることになる
そして
cube[1].display();
を実行することができる。
オブジェクトcube[2]のメンバ関数は
cube[2].display()
で表されることになる。
そして
cube[2].display();
を実行することができる。
☆ ☆ ☆ ☆ ☆ ☆ ☆
マックス「→ってなるんだろう。
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[0]のメンバ関数とは
オブジェクトcube[0]のメンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
が
クラスのメンバ関数void display()
の定義
👇
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
の中の
no
tate
yoko
takasa
に代入されたもので
cube[0].display()
であらわされます。
そして
cube[0].display();
を実行することができます。
オブジェクトcube[1]のメンバ関数
オブジェクトcube[2]のメンバ関数
も同様です
☆ ☆ ☆ ☆ ☆ ☆ ☆
マックス「
cube[0].display();
cube[1].display();
cube[2].display();
👆これらの
オブジェクト
cube[0]
cube[1]
cube[2]
のメンバ関数が実行できたとして
そのことに意味があるのか??」
ソーラー「
cube[0].display();
cube[1].display();
cube[2].display();
が実行できるということの意味ですか?」
マックス「何かに便利に使われるために
クラスCube型の配列宣言
Cube cube[3];
が実行することができるようになっているんだろう?
Cube型のクラス宣言内で
自作関数display()のメンバ関数宣言
void display();
を行い
クラスCubeのメンバ関数となっている自作関数display()の定義
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
が設定されている状態で
Cube cube[3];
を実行すると
オブジェクトcube[0]のメンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
とともに
オブジェクトcube[0]のメンバ関数
cube[0].display()
オブジェクトcube[1]のメンバ関数
cube[1].display()
オブジェクトcube[2]のメンバ関数
cube[2].display()
も生成される。
Cube型のオブジェクトの配列宣言
Cube cube[3];
を実行するのは
cube[0].display()
cube[1].display()
cube[2].display()
を生成、実行することができるようにするためなんじゃないか?
cube[0].display();
cube[1].display();
cube[2].display();
は
for文を用いて
for(i;i<4;i++) {
cube[i].display();
}
のように簡単に記述することができるからな
もし
Cube型のオブジェクト宣言を3つ
Cube a;
Cube b;
Cube c;
を実行すると
オブジェクトのメンバ関数の実行は
a.display();
b.display();
c.display();
となるが
この
a.display();
b.display();
c.display();
は
for文を用いてまとめることはできないだろう
オブジェクトが今の場合のように3つだったらいいが
オブジェクトが10000個あると
オブジェクトのメンバ関数の実行には
10000個も命令文が必要になっちゃうんじゃないか(*^▽^*)
🌞 🌞 🌞 🌞 🌞 🌞 🌞
配列を作製すると
for文をつかって
便利に
配列変数に格納されたデータを取り扱うことができました。
つまり
クラスCube型の配列宣言
Cube cube[3];
を
実行すると便利な点は
配列変数とfor文をつかって
オブジェクトのメンバ関数の実行を容易にできる点にあるのですね
より便利に
オブジェクトのメンバ変数に格納されている数値データを取り扱う
ことができるようになるというわけです
🐤🐤🐤(ひよひよこ)より
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます