自作関数の引数にクラスアスタリスク型のポインタ変数宣言を設定しmain関数内で宣言されたクラス型のオブジェクトのアドレスを代入することができます。その際 参照渡し(ポインタ渡し)となります 

ソーラー「このエピソードのお題は


自作関数の引数にクラスアスタリスク型のポインタ変数宣言を設定しmain関数内で宣言されたクラス型のオブジェクトのアドレスを代入することができます。その際 参照渡し(ポインタ渡し)となります 

となっています。



自分で記述しておいてなんですが


これはいったいどういったことなのでしょうか?



さあ 次のプログラムをみてよ😊


さあ  さあ


#include <iostream>


using namespace std;


class Cube {


public:

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

public:

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

public:

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

public:

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

public:

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


};


void Cube::display() {


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

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

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

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


}


//👆クラスCubeのメンバ関数となっている自作関数 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;

}

/*👆クラスCubeのメンバ関数でない


普通の自作関数Cubedata2baihyoujiの定義をおこなっています


引数に


aのクラスCube*(アスタリスク) 型のポインタ変数宣言

を行うことにより

main関数内でクラスCube型のオブジェクト宣言により

作製されたオブジェクト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です

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

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

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

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

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

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

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

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


マックス「まったくわからんぜぃ


なんだ このプログラムは( ^ω^)・・・」


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


てんC「このプログラムのポイントは


自作関数の定義


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)で


自作関数

Cubedata2baihyoujiの引数部分に


クラスCube*(アスタリスク)型のポインタ変数宣言


Cube* aが


記述されているところではないでしょうか?」


マックス「クラスCube*(アスタリスク)型のポインタ変数宣言


Cube* a


???


えっ?」









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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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