自作関数の引数にクラス型のオブジェクト宣言を設定し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


に代入されることになります。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る