クラスのメンバ関数の引数にクラスのメンバ変数ではない変数を設定してみよう。その2
#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";
}
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です
マックス「このプログラムでは
Cubeのクラス宣言内で
メンバ関数宣言
void display();
が記述されているだろう。
この
クラスCubeのメンバ関数display()の定義は
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
となっているだろ。
main関数内で
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
の実行後
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display();
が実行されるときは
クラスCubeのメンバ関数display()の定義内の
変数
no
tate
yoko
takasa
に
クラスCube型のオブジェクト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";
が実行される
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
には
1
2.0
3.0
4.0
が代入されているので
プログラムの実行結果
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
が表示される
変数
no
tate
yoko
takasa
に
猫がでたらめに投入されているわけではないな😊」
てんC「はい、そのとおりですね。マックスさん」
マックス「ふはははははははははは~~~~
そうだろう、そうだろう
ところで
クラスCubeのメンバ関数display()の引数に
なにか変数宣言を使用したい場合は
どうしたらいいんだ。」
ソーラー「はい??」
マックス「display()の()の中だよぉ 中😸」
ソーラー「??」
ソーラー「??え?」
マックス「ようは
クラスCubeのメンバ関数display()の定義を
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
でなく
void Cube::display(int e) {
cout<<"今日の立方体は"<<e<<"円になります"<< "\n";
}
のように定義する
このように
クラスCubeのメンバ関数display()の引数として
変数宣言
int e
をもってきたいということだよ~んん。」
ソーラー「このクラスCubeのメンバ関数display(int e)は・・・」
🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤
"クラスとは"
"あるモノのデータを格納する変数とそのデータを格納している変数に作用する関数を1つにまとめるためにあります"
そして
"クラスとは"
"ついでに そのクラスに含めておくと便利そうな関数をまとめておくためにある"
のですね
このように定義された
👇
void Cube::display(int e) {
cout<<"今日の立方体は" <<e<<"円になります"<< "\n";
}
👆
クラスCubeのメンバ関数display(int e)の定義内には
クラスCubeのメンバ変数
no
tate
yoko
takasa
は用いられていません
つまり
クラスCubeのメンバ関数display(int e)は
立方体dube1のデータを格納している変数に作用する関数ではないのですが
クラスCubeにまとめておくと便利なので
クラスCubeのメンバ関数となっています
🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤
ソーラー「
void Cube::display(int e) {
cout<<"今日の立方体は" <<e<<"円になります"<< "\n";
}
と
定義された
クラスCubeのメンバ関数
void display(int e)
ですか・・・
クラスCubeのメンバ関数が
さきほどの
void display()
から
void display(int e)
に変化しているね・・・
ということは
この自作関数displayの🐤クラスCube
🍅メンバ関数宣言🍅は
void display();
void display(int e);
になるということかな?
おもしろいね
ということは
クラス宣言も
書き換えられて
class Cube {
public:
int no; //変数noはクラスCubeのメンバ変数とよばれます
float tate; //変数tateはクラスCubeのメンバ変数とよばれます
float yoko; //変数yokoはクラスCubeのメンバ変数とよばれます
float takasa; //変数takasaはクラスCubeのメンバ変数とよばれます
void display(); //自作関数displayはクラスCubeのメンバ関数とよばれます
};
ではなく
class Cube {
public:
int no;
float tate;
float yoko;
float takasa;
void display(int e);
/*🌞🌞🌞👆
ここの部分がvoid display(); からvoid display(int e);
に変更されています🌞🌞🌞*/
};
になるということかな」
ぶーにゃん「ということはだにゃ~ん
にゃ~んん
main関数内で
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(int e);
を実行するには
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
と
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(int e)
を使用できる状態にしてから
cube1.display(int e);
を実行すればいいのかにゃ?」
ソーラー「う~んん
引数である
int e
に
数値データを代入していない状態では
cube1.display(int e);
は実行、できないとおもうな」
てんC「そうなのです。
例えば
void function(int x){
cout<<x<<"\n";
}
と定義された
自作関数functionを
main関数内で実行するには
function(1);
のように
int xに1を代入する必要がありました。
同様に
クラスCubeのメンバ関数宣言
void.display(int e);
の引数に
変数宣言
int e
が記述されている場合は
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(int e)
を実行する際は
cube1.display(int e);
の
変数宣言
int e
に数値データを代入して実行することになります
たとえば
cube1.display(100);
のように実行することになります。」
マックス「そうなのか~~
お兄ちゃんは 感心するぞ
ということで
クラスCubeのメンバ関数display()の定義の引数に
int e
が記述された
void Cube::display(int e) {
cout<<"今日の立方体は" <<e<<"円になります"<< "\n";
}
をもちいて
プログラムを実行してみようではないか」
ソーラー「これまた面白そうなことになってきたね。」
#include <iostream>
using namespace std;
class Cube{
public:
int no;
float tate;
float yoko;
float takasa;
void display(int e);
/*🌞🌞🌞👆
ここの部分がvoid display(); からvoid display(int e);
に変更されています🌞🌞🌞*/
};
void Cube::display(int e) {
cout<<"今日の立方体は" <<e<<"円になります"<< "\n";
}
/*👆クラスCubeのメンバ関数となっている自作関数display(int e)の定義をおこなっています*/
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
cube1.no = 1;
cube1.tate = 2.0;
cube1.yoko = 3.0;
cube1.takasa = 4.0;
cube1.display(100);//👈引数に数値データを代入しました
return 0;
}
プログラムの実行結果
今日の立方体は100円になります
マックス「やったな!
クラスCubeのメンバ関数display(int e)の定義の
引数に
変数宣言
int e
をもちいて
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(100);
を実行することができたじゃないか
着実に進んでるじゃないか。(*^▽^*)」
てんC「
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
が実行されると
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(int e)
が生成されます
そして
int e
に
100
が代入された
cube1.display(100);
が実行されるとき
クラスCubeのメンバ関数displayの定義内の命令文が実行されることになります
そのとき
もし
クラスCubeのメンバ変数
no
tate
yoko
takasa
が
クラスCubeのメンバ関数displayの定義内で使用されていれば
クラスCubeのメンバ変数
no
tate
yoko
takasa
は
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を表すことになりますが
クラスCubeのメンバ関数displayの定義
👇
void Cube::display(int e) {
cout<<"今日の立方体は" <<e<<"円になります"<< "\n";
}
👆
内で
クラスCubeのメンバ変数
no
tate
yoko
takasa
は用いられていません。
ですので
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display(100);
が実行されるとき
e
に
100
が代入された
cout<<"今日の立方体は" <<100<<"円になります"<< "\n";
が
そのまま実行されることになります
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
は関係してこないことになりますね」
マックス「
cube1.display(100)は
クラスCube型のオブジェクトcube1のメンバ関数なんだが
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
は関係してこないことになるってことか
メンバ関数の定義に必ずしも
メンバ変数がもちいられていなくてもいいってわけだ
」
てんC「そうなんです マックスさん😊」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます