クラスの鑑賞会を実施しています その1 オブジェクトのメンバ変数とオブジェクトのメンバ関数は仲良しさん


  かっぽ~~~~ん


クラスの構造の鑑賞会は続いていきます。


#include <iostream>


using namespace std;


class Cube {


public: // (アクセス指定子)


int no; //変数noはクラスCubeのメンバ変数とよばれます

float tate; //変数tateはクラスCubeのメンバ変数とよばれます

float yoko; //変数yokoはクラスCubeのメンバ変数とよばれます

float takasa; //変数takasaはクラスCubeのメンバ変数とよばれます


void display(); //自作関数display()はクラスCubeのメンバ関数とよばれます


};


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています


int main() {


Cube cube1;


//👆cube1のクラスCube型のオブジェクト宣言をおこなっています


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}



プログラムの実行結果


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


マックス「では


俺の番(turn)かな


そうだな


やっぱり

命令文

cube1.display();


じゃないか


命令文

cube1.display();


が実行されているだろう


このとき


プログラムの実行結果



立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


となっているだろう」


ぶーにゃん「にゃ~~~~ん」


マックス「


命令文

cube1.display();


が実行されると


クラスCubeのメンバ関数display()の定義が


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


なので


定義内の


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


が実行されることになる


このとき


この命令文の中の変数

no

tate

yoko

takasa

オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa

が代入された


cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";

cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";

cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";

cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";


が実行されることになる


だが


この命令文の中の変数

no

tate

yoko

takasa

直接


cube1.no

cube1.tate

cube1.yoko

cube1.takasa

代入した覚えはないんだぴょ~ん,pypO~nn」






       かっぽぉ~~~~~~~~~~~~ん~~~~~






鹿威ししおどしが清らかな音色をたてています。



マックス「いままでみてきた


普通の自作関数たちでは


自作関数内の変数に数値データが代入される場合


自作関数は引数部分にその変数宣言をもっていた。


自作関数functionなら


function(int a){


cout<<a<<"\n";


}


のint aのようにだ。



なんでかはわからないが


クラスCubeのメンバ関数display()の定義をみてもわかるように

👇

void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}

👆


display()の()内には引数の記述がない・・・


ふつうは


クラスCubeのメンバ関数void Cube::display() の定義内の


no

tate

yoko

takasa

数値データが代入されて実行される場合



クラスCubeのメンバ関数void Cube::display() の定義が


いまのように引数をもたない


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


ではなく



void Cube::display(int no,float tate,float yoko,float takasa) {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


と記述するはずなんだが・・・・・



main関数内で


オブジェクトcube1のメンバ関数を実行するときは


cube1.display(1,2.0,3.0,4.0);


のように


引数となっている


int no

float tate

float yoko

float takasa



1

2.0

3.0

4.0

を代入して実行するわけだ


ふつうはな



でだ



だったら


クラスCubeのメンバ関数void Cube::display() の定義を


いまのように引数をもたない


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


ではなく


         最初から


void Cube::display(int no,float tate,float yoko,float takasa) {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


と記述しておいたらどうなるんだ??


cube1.display(1,2.0,3.0,4.0);


を実行することができるのか


cube1.display(1,2.0,3.0,4.0);


を実行したら


ビルド実行結果は


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


となるんだろうか?」




てんC「結構なお手前ですね。」




ソーラー「そうですね、いいお手前だね。


鑑賞会はプログラムを味わうことができて楽しいね。」


マックス「もう1度確認すると実際のところは


      

      🌞cube1のクラスCube型のオブジェクト宣言🌞



             🌞Cube cube1;🌞



             🌞が実行されると🌞



オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa

が生成される。


この


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa

cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;

と数値データが代入されている・・・


そして・・・」


ぶーにゃん「にゃおっと・・・」


マックス「


オブジェクトcube1のメンバ関数


cube1.display();



が実行される場合には



自作関数display()の定義

👇


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}



内の



これらの命令文

👇

cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


変数

no

tate

yoko

takasa


オブジェクトcube1のメンバ変数

cube1.no

cube1.tate

cube1.yoko

cube1.takasa


         🌞俺達には見えないが自動的に代入された🌞 


cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";

cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";

cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";

cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";


が実行される」


ぶーにゃん「にゃんと🐈


変数

no

tate

yoko

takasa



cube1.no

cube1.tate

cube1.yoko

cube1.takasa



             🌞見えにゃいが自動的に🌞 



代入されるにゃんか」




マックス「ふぅっ そーなのだぁ


そして


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

代入されているので


命令文

cube1.display();


が実行されると


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


が表示されるってわけだ



ははは( ̄∇ ̄;)ハッハッハ( ̄∇ ̄;)ハッハッハ~~~~~


だからあ



命令文

cube1.display();


の引数()の部分に何も引数がなくデータが代入されていないのに


cube1.display();


が実行されると


プログラムの実行結果


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


が表示されるわけだ」



ソーラー「優雅な考察です。」



ぶーにゃん「にゃ~~ん」


マックス「だから


クラスCubeのメンバ関数display() の定義が


いまのように引数をもたない


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


ではなく



void Cube::display(int no,float tate,float yoko,float takasa) {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}

のように


データを受け取る引数をもっていて


cube1.display(1,2.0,3.0,4.0);


のように


引数となっている


int no

float tate

float yoko

float takasa


数値データ

1

2.0

3.0

4.0

を代入して実行したら


プログラムの実行結果


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


となるんだろうか?


そのことについては


どう思うのかな


だいたいこれだと


void Cube::display(int no,float tate,float yoko,float takasa) {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


内で用いられている変数


no

tate

yoko

takasa



クラスCubeのメンバ変数


no

tate

yoko

takasa


なのか?


それとも


クラスcubeのメンバ変数


name

HP

MP


とは関係ない


ただのdisplay(int no,float tate,float yoko,float takasa)の引数としてデータを受け取るだけの変数なのか?


わからぁ~んん


なんかもう こんがらがってるじゃないか?」


ぶーにゃん「にゃ~~ん」


ソーラー「にゃ~~ん」


てんC「みゅ~~~」


マックス「わんわん」



        かっぽ~~~~~~ん  



ぶーにゃん「にゃ~~ん」


ソーラー「みゃお~ん」


てんC「みゅう みゅう~~~」


マックス「わんわん わおぉん わおおん」




ソーラー「準備ができたところで・・・


それは


クラス宣言とクラスのメンバ関数の定義を


よくみてみればいいんじゃないかな」


マックス「・・・なにいってるの・・・・


か・・・わかりません」






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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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