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