🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
オブジェクト宣言Cube* aに&cube1が代入されるとオブジェクトcube1のメンバ関数cube1.displayはa->display()で表されることになります
オブジェクト宣言Cube* aに&cube1が代入されるとオブジェクトcube1のメンバ関数cube1.displayはa->display()で表されることになります
ソーラー「前のエピソードでは自作関数の定義は
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)
の引数となっているCube* aに
クラスCube型のオブジェクトcube1のアドレス&cube1を代入すると
オブジェクトa
に
アロー演算子を用いた
a->no
a->tate
a->yoko
a->takasa
は
オブジェクトcube1のメンバ変数のアドレス
&cube1.no
&cube1.tate
&cube1.yoko
&cube1.takasa
のメモリに格納されている数値データを表しました😊
すなわち
a->no
a->tate
a->yoko
a->takasa
は
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
そのものをあらわすことになったわけです。」
マックス「このとき、クラスCubeのメンバ関数
display()
にアロー演算子を用いた
a->display()
は
cube1.display()
をあらわしたりしてな。(´▽`*)」
ソーラー「びくっ するどいですね。
オブジェクトa
に
アロー演算子を用いた
a->display()
は
cube1.display()を表すことになります
ほんとにそうなるかな😊
と思われるかもしれません。
そこで
Cube* aにオブジェクトcube1のアドレス&cube1
を代入したとき
オブジェクトaにアロー演算子を用いた
a->display()
は
cube1.display()をあらわすことになるか調べてみたいと思います
そこで
自作関数の定義を
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->display();
/*🌞 自作関数の定義にa->display()のみを記述しました。
Cube* aにオブジェクトのアドレス&cube1が代入されると
a->display()
は
cube1.display()をあらわすことになります。*/
return;
}
に変更したプログラムを実行してみたいと思います。
#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";
}
//👆クラスCubeのメンバ関数となっている自作関数displayの定義をおこなっています
void Cubedata2baihyouji(Cube* a)
{
a->display();
/*🌞 a->display()のみを記述しました。
Cubedatadisplay* aにオブジェクトcube1が代入されると
a->display();
は
cube1.displayをあらわすことになります。*/
return;
}
/*👆クラスCubeのメンバ関数でない
普通の自作関数Cubedata2baihyoujiの定義をおこなっています
引数に
aのクラスCube*(アスタリスク) 型のポインタ変数宣言
を行うことにより
main関数内でクラスCube型のオブジェクト宣言により
作製されたオブジェクトcube1のアドレス&cube1を
Cube*(アスタリスク) 型のポインタ変数aに代入することができます
*/
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);
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
return 0;
}
プログラムの実行結果
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
立方体につけられたナンバーは1です
立方体の縦の長さは2です
立方体の横の長さは3です
立方体の高さの長さは4です
マックス
「Cube* aにオブジェクトcube1が代入されたとき
a->display();
の実行結果は
cube1.display();
の実行結果と等しくなっている!
a->display();
が
cube1.display();
をあらわすことになる仕組みというわけか」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます