🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
自作関数の中でオブジェクト宣言が実行されオブジェクトが生成された場合も自動的にそのオブジェクトのコンストラクタは実行されることになります
自作関数の中でオブジェクト宣言が実行されオブジェクトが生成された場合も自動的にそのオブジェクトのコンストラクタは実行されることになります
ソーラー「main関数内で
オブジェクト宣言が行われ
オブジェクトが作製されると
自動的に
そのオブジェクトのメンバ変数が
コンストラクタの定義に代入された
オブジェクトのコンストラクタが実行されました😊
となると
自作関数の定義内でオブジェクト宣言が行われていて
main関数内で
自作関数が実行された場合は
オブジェクトのコンストラクタは実行されることになるのかな?
自作関数が実行されると
オブジェクト宣言が実行されることにより
オブジェクトが生成されることになるのだから
そのオブジェクトのメンバ変数が
コンストラクタの定義に代入された
オブジェクトのコンストラクタが実行されそうだけど
どうなるかな?」
マックス「それは・・・どうかな
実行されるんじゃないか?」
てんC「それでは
次のようなクラスCube
と
自作関数newmadefunctionを用意してみます
クラスCubeのクラス宣言と
クラスCubeのメンバ関数とクラスのコンストラクタの定義は
以下のように設定します」
👇
class Cube{
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
public:
Cube();
//🌞🌞🌞コンストラクタのメンバ関数宣言を行っています🌞🌞🌞
public:
void display(); //自作関数display()はクラスCubeのメンバ関数とよばれます
};
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
//👆🌞🌞🌞コンストラクタの定義を行っています🌞🌞🌞
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
てんC「さらに
自作関数newmadefunction()の定義を
👇
void newmadefunction() {
Cube a;
a.display();
cout << "立方体につけられたナンバーは" << a.no << "です" << "\n";
cout << "立方体の縦の長さは" <<a. tate << "です" << "\n";
cout << "立方体の横の長さは" << a.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << a.takasa << "です" << "\n";
}
のように設定します
自作関数newmadefunctionが実行されると
クラスCube型のオブジェクト宣言
Cube a;
が実行され
クラスCube型のオブジェクトaが生成されることになりますが
このとき
クラスCube型のオブジェクトaのコンストラクタは実行されるのでしょうか?
そして
クラスCube型のオブジェクトaのコンストラクタが実行されたなら
つまり
クラスCube型のオブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
が
クラスのメンバ関数であるクラスのコンストラクタの定義
👇
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
の
no
tate
yoko
takasa
に代入された
a.no= 0;
a.tate = 0.0;
a.yoko= 0.0;
a.takasa= 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
が実行されて
クラスCube型のオブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
は
0
0.0
0.0
0.0
に初期化されるのでしょうか?
そのプログラムを実行してみたいと思います」
👇
#include <iostream>
using namespace std;
class Cube{
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
public:
Cube();
//🌞🌞🌞コンストラクタのメンバ関数宣言を行っています🌞🌞🌞
public:
void display(); //自作関数display()はクラスCubeのメンバ関数とよばれます
};
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
//👆🌞🌞🌞コンストラクタの定義を行っています🌞🌞🌞
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
void newmadefunction() {
Cube a;
a.display();
cout << "立方体につけられたナンバーは" << a.no << "です" << "\n";
cout << "立方体の縦の長さは" <<a. tate << "です" << "\n";
cout << "立方体の横の長さは" << a.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << a.takasa << "です" << "\n";
}
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
/*🌞このとき クラスCube型のオブジェクトcube1のコンストラクタが自動的に実行されています
クラスCube型のオブジェクトのメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
は
0
0.0
0.0
0.0
に初期化されます。
そして
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
が実行されます
🌞*/
cube1.display();
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
newmadefunction();
return 0;
}
プログラムの実行結果
生成されたオブジェクトのメンバ変数を初期化しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
生成されたオブジェクトのメンバ変数を初期化しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
マックス「自作関数が実行されて
クラスCube型のオブジェクトaが生成されたときも
クラスCube型のオブジェクトaのコンストラクタが実行されている!
なんと
自作関数が実行されてオブジェクトが生成される場合でも
そのオブジェクトのコンストラクタが
実行されるのか~い」
ほんと驚きです
solarplexussより
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます