🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
自作関数の引数にクラス型のオブジェクト宣言を設定しmain関数内で宣言されたクラスのオブジェクトを代入することができます。その際 値渡しとなります その2
自作関数の引数にクラス型のオブジェクト宣言を設定しmain関数内で宣言されたクラスのオブジェクトを代入することができます。その際 値渡しとなります その2
ソーラー「
#include <iostream>
using namespace std;
class Cube {
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
public:
void display();
};
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
void Cubedata2baihyouji(Cube a)
{
a.no = 2 * a.no;
a.tate = 2 * a.tate;
a.yoko = 2 * a.yoko;
a.takasa = 2 * a.takasa;
cout << "立方体につけられたナンバーは" << a.no << "です" << "\n";
cout << "立方体の縦の長さは" << a.tate << "です" << "\n";
cout << "立方体の横の長さは" << a.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << a.takasa << "です" << "\n";
return;
}
//👆クラスCubeのメンバ関数でない普通の自作関数Cubedata2baihyoujiの定義をおこなっています
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
cube1.no = 1;
cube1.tate = 2.0;
cube1.yoko = 3.0;
cube1.takasa = 4.0;
cube1.display();
Cubedata2baihyouji(cube1);
cube1.display();
return 0;
}
ビルド実行結果
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
立方体につけられたナンバーは2です
立方体の縦の長さは4です
立方体の横の長さは6です
立方体の高さの長さは8です
立方体につけられたナンバーは1です//👈ここに注目
立方体の縦の長さは2です//👈ここに注目
立方体の横の長さは3です//👈ここに注目
立方体の高さの長さは4です//👈ここに注目
ソーラー「
このプログラムでは
🍓main関数内で🍓
cube1のCube型のオブジェクト宣言
Cube cube1;
により作製された
オブジェクトcube1が
Cubedata2baihyouji(cube1);
の実行時
🍅 Cubedata2baihyouji(Cube a)🍅
の引数となっている
aのクラスCube型のオブジェクト宣言
Cube aに代入されていますが
オブジェクトcube1
そのものが
オブジェクトaに
代入されているわけではありません。
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に代入されるのでもありません
このとき
正確には
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている🌞数値データ🌞が
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に代入されることになります。(*^▽^*)」
てんC「ソーラーさん
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている🌞数値データ🌞
1
2.0
3.0
4.0
だけが
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に
💖値渡し💖
されているのですね」
ソーラー「そうなんだ
では
Cubedata2baihyouji(cube1);
の実行時
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている🌞数値データ🌞
1
2.0
3.0
4.0
が
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に代入されるならば
どのように自作関数 Cubedata2baihyoujiが
実行されるか見ていきましょう。
まずは
自作関数Cubedata2baihyoujiの定義
void Cubedata2baihyouji(Cube a)
{
a.no =2*a.no;
a.tate =2* a.tate;
a.yoko=2* a.yoko;
a.takasa =2* a.takasa;
cout << "立方体につけられたナンバーは" << a.no<< "です" << "\n";
cout << "立方体の縦の長さは" << a.tate << "です" << "\n";
cout << "立方体の横の長さは" << a.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << a.takasa << "です" << "\n";
return;
}
の
void Cubedata2baihyouji(Cube a)
の部分をみてよ
自作関数Cubedata2baihyouji
の引数の部分()内に
aのクラスCube型のオブジェクト宣言
Cube a
が記述されています。😊
main関数内で
自作関数
Cubedata2baihyouji(cube1);
が実行される際
この引数となっている部分の
aのクラスCube型のオブジェクト宣言
Cube a
の
🍓オブジェクトaに🍓
main関数内で
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
の実行により作製された
🍋オブジェクトcube1🍋
が代入されています。
すると
自作関数Cubedata2baihyoujiの定義内の
オブジェクトaの
メンバ変数
a.no
a.tate
a.yoko
a.takasa
に
オブジェクトcube1の
メンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が代入されるのではなく
正確には
オブジェクトaの
メンバ変数
a.no
a.tate
a.yoko
a.takasa
に
オブジェクトcube1の
メンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が格納している数値データ
1
2.0
3.0
4.0
が代入、値渡しされることになります。
つまり
a.no =1;
a.tate=2.0;
a.yoko=3.0;
a.takasa=4.0;
が実行されているんだ。(´▽`*)
次に
a.no =2*a.no;
a.tate =2* a.tate;
a.yoko=2* a.yoko;
a.takasa =2* a.takasa;
が実行されると
オブジェクトaの
メンバ変数
a.no
a.tate
a.yoko
a.takasa
に
格納されている数値データは
1
2.0
3.0
4.0
から
2
4.0
6.0
8.0
になります。
すると
cout << "立方体につけられたナンバーは" << a.no<< "です" << "\n";
cout << "立方体の縦の長さは" << a.tate << "です" << "\n";
cout << "立方体の横の長さは" << a.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << a.takasa << "です" << "\n";
の実行結果は
立方体につけられたナンバーは2です
立方体の縦の長さは4です
立方体の横の長さは6です
立方体の高さの長さは8です
となるというわけです
もちろん
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている🌞数値データ🌞
1
2.0
3.0
4.0
だけが
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に代入されるという
🌞値渡し🌞
が実行されているので
オブジェクトaのメンバ変数
a.no
a.tate
a.yoko
a.takasa
に格納されている数値データが
自作関数
Cubedata2baihyouji(cube1);
の操作を受けて
1
2.0
3.0
4.0
から
2
4.0
6.0
8.0
になったとしても
main関数内で
オブジェクト宣言されたオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている数値データは影響をうけることなく
1
2.0
3.0
4.0
のまま
変化しません。
プログラム内の
cube1.no = 1;
cube1.tate = 2.0;
cube1.yoko = 3.0;
cube1.takasa = 4.0;
cube1.display();//👈
Cubedata2baihyouji(cube1);
cube1.display();//👈
のビルド実行結果
をみてもおわかりになられますように
Cubedata2baihyouji(cube1);
の実行の前後の
cube1.display();
のビルド実行結果が
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
のままなことからも
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に格納されている数値データが
1
2.0
3.0
4.0
のまま変化していないことがわかりますね。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます