クラスの鑑賞会を実施しています その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「みゅう みゅう~~~」
マックス「わんわん わおぉん わおおん」
ソーラー「準備ができたところで・・・
それは
クラス宣言とクラスのメンバ関数の定義を
よくみてみればいいんじゃないかな」
マックス「・・・なにいってるの・・・・
か・・・わかりません」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます