配列を使って複数のオブジェクト宣言をまとめて実行してみましょう。
てんC「みなさん 次のプログラムでは
オブジェクトcube1
オブジェクトcube2
オブジェクトcube3
の
クラスCube型のオブジェクト宣言
Cube cube1;
Cube cube2;
Cube cube3;
が行われています。
👇
#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 cube1;
Cube cube2;
Cube cube3;
/*🌞🌞🌞cube1とcube2とcube3のクラスCube型のオブジェクト宣言をおこなっています🌞🌞🌞*/
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa<< "です" << "\n";
cout << "立方体につけられたナンバーは" << cube2.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube2.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube2.yoko<< "です" << "\n";
cout << "立方体の高さの長さは" << cube2.takasa<< "です" << "\n";
cout << "立方体につけられたナンバーは" << cube3.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube3.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube3.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube3.takasa << "です" << "\n";
return 0;
}
ビルド実行結果
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
てんC「この3つの
クラスCube型のオブジェクト宣言
Cube cube1;
Cube cube2;
Cube cube3;
が実行されると
自動的に
オブジェクトcube1のコンストラクタ
オブジェクトcube2のコンストラクタ
オブジェクトcube3のコンストラクタ
が実行されて
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube2のメンバ変数
cube2.no
cube2.tate
cube2.yoko
cube2.takasa
オブジェクトcube3のメンバ変数
cube3.no
cube3.tate
cube3.yoko
cube3.takasa
が
0
0.0
0.0
0.0
に
初期化されているのが
ビルド実行結果を見ても分かりますね(´▽`*)
この3つの
クラスCube型のオブジェクト宣言
Cube cube1;
Cube cube2;
Cube cube3;
は
配列をつかって
次のように書き変えることもできます。
Cube cube[3];
👆このように
シンプルになります(*^-^*)/」
マックス「クラスCube型のオブジェクト宣言
Cube cube1;
Cube cube2;
Cube cube3;
のかわりが
Cube cube[3];
で表現されるのか?
これは簡単だな(^_^)/
int a;
int b;
int c;
を
int str[3];
のように配列をつかって
まとめて表記したのと一緒だな(*^-^*)/」
てんC「そうなのです。
クラス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[0]のメンバ関数は
cube[0].display()
で表され
cube[0].display();
を実行することもできます
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[1]のメンバ変数は
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
になります
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[1]のメンバ関数は
cube[1].display()
で表され
cube[1].display();
を実行することもできます
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[2]のメンバ変数は
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
になります
☆ ☆ ☆ ☆ ☆ ☆ ☆
オブジェクトcube[2]のメンバ関数は
cube[2].display()
で表され
cube[2].display();
を実行することもできます
☆ ☆ ☆ ☆ ☆ ☆ ☆
そして
次のプログラムのように
Cubeのクラス宣言内で
クラスCubeのメンバ関数であるクラスCubeのコンストラクタの
メンバ関数宣言が
Cube();
Cube(int a, float b, float c, float d);
👆
このように2つ行われている場合
main関数内で
クラス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]のコンストラクタ
オブジェクトcube[1]のメンバ関数であるオブジェクトcube[1]のコンストラクタ
オブジェクトcube[2]のメンバ関数であるオブジェクトcube[2]のコンストラクタ
が実行されることになります。」
マックス「引数を持たないコンストラクタ・・・
つまり
クラスCubeの配列宣言
Cube cube[3];
の実行と同時に
引数を持たない
👇
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[0].no=0;
cube[0].tate=0.0;
cube[0].yoko=0.0;
cube[0].takasa=0.0;
が実行され
引数を持たない
👇
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
👆
と定義された方のコンストラクタの
no
tate
yoko
takasa
に
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
が代入された
cube[1].no=0;
cube[1].tate=0.0;
cube[1].yoko=0.0;
cube[1].takasa=0.0;
が実行され
引数を持たない
👇
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
👆
と定義された方のコンストラクタの
no
tate
yoko
takasa
に
オブジェクトcube[2]のメンバ変数
cube[2].no
cube[2].tate
cube[2].yoko
cube[2].takasa
が代入された
cube[2].no=0;
cube[2].tate=0.0;
cube[2].yoko=0.0;
cube[2].takasa=0.0;
が実行されるというわけだ。
すなわち
オブジェクトcube[0]のメンバ関数であるオブジェクトcube[0]のコンストラクタ
オブジェクトcube[1]のメンバ関数であるオブジェクトcube[1]のコンストラクタ
オブジェクトcube[2]のメンバ関数であるオブジェクトcube[2]のコンストラクタ
が実行されるというわけだな。
にゃるほどな。」
てんC「はい😊 このとき
引数を持たないタイプのコンストラクタCube()
👇
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
の定義により
オブジェクトcube[0]のメンバ変数
cube[0].no
cube[0].tate
cube[0].yoko
cube[0].takasa
は
0
0.0
0.0
0.0
で初期化され
生成されたオブジェクトのメンバ変数を初期化しました
が
ビルド実行結果として表示されることになります。
同様に
オブジェクトcube[1]のメンバ変数
cube[1].no
cube[1].tate
cube[1].yoko
cube[1].takasa
は
0
0.0
0.0
0.0
で初期化され
生成されたオブジェクトのメンバ変数を初期化しました
が
ビルド実行結果として表示されることになります。
同様に
オブジェクト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];
を使ったプログラムの実行は僕にまかせてよ。
#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].no << "です" << "\n";
cout << "立方体の横の長さは" << cube[0].no << "です" << "\n";
cout << "立方体の高さの長さは" << cube[0].no << "です" << "\n";
cout << "立方体につけられたナンバーは" << cube[1].no << "です" << "\n";
cout << "立方体の縦の長さは" << cube[1].no << "です" << "\n";
cout << "立方体の横の長さは" << cube[1].no << "です" << "\n";
cout << "立方体の高さの長さは" << cube[1].no << "です" << "\n";
cout << "立方体につけられたナンバーは" << cube[2].no << "です" << "\n";
cout << "立方体の縦の長さは" << cube[2].no << "です" << "\n";
cout << "立方体の横の長さは" << cube[2].no << "です" << "\n";
cout << "立方体の高さの長さは" << cube[2].no << "です" << "\n";
return 0;
}
ビルド実行結果
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
生成されたオブジェクトのメンバ変数を初期化しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
ソーラー「クラスの配列宣言をおこなって
複数のオブジェクトを作成した場合でも
そのオブジェクトのメンバ変数が代入された
オブジェクトのコンストラクタが実行されるんだね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます