クラス内のメンバ変数宣言とメンバ関数の定義内のメンバ変数はお互いが関係しあっています

#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()の定義をおこなっています


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のクラス宣言内の


メンバ変数宣言

メンバ関数宣言


のアクセス指定子を


メンバ変数宣言


int no;

にはアクセス指定子private


float tate;

にはアクセス指定子public


float yoko;

にはアクセス指定子private


float takasa;

にはアクセス指定子public


メンバ関数宣言


void display();


には


アクセス指定子public


というように


バラバラにアクセス指定子を変更してプログラムを実行してみるか~



てんC「そのプログラムは以下のようになります😊」


#include <iostream>


using namespace std;


class Cube {


public:

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

private:

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

public:

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

private:

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()の定義をおこなっています


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;

}


マックス「Cubeのクラス宣言内で


private: //🌞アクセス指定子はprivateです

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


private: //🌞アクセス指定子はprivateです

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



が宣言されているということは


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


Cube cube1;


が実行され


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


cube1.tate

cube1.takasa

が生成されても


cube1.tate

cube1.takasa

を使用することはできなくなる


ということは


cube1.tate = 2.0;

cube1.takasa = 4.0;

は実行できず


ビルドエラーがおきるんじゃないか?


のう ソーラーよ」


ソーラー「さあ?どうなるかな?


それでは


プログラムを実行してみましょう。


ビルドっ」



プログラムの実行結果



エラー (アクティブ) E0265 メンバー "Cube::tate" (宣言された 行 10) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::takasa" (宣言された 行 14) にアクセスできません

エラー C2248 'Cube::tate': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::takasa': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。


ソーラー「予想通り


Cubeのクラス宣言内


のメンバ変数宣言


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

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


のアクセス指定子は


private


に設定されているため


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


Cube cube1;


を実行して


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


cube1.tate

cube1.takasa

を作製しても


cube1.tate

cube1.takasa

を使用することはできなくなるので


プログラムを実行してもビルドエラーが


表示されました。」


マックス「なるほど


では


Cubeのクラス宣言

👇


class Cube {


public: //🌞アクセス指定子はpublicです

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

private: //🌞アクセス指定子はprivateです

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

public: //🌞アクセス指定子はpublicです

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

private: //🌞アクセス指定子はprivateです

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

public: //🌞アクセス指定子はpublicです

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


};

👆


内のメンバ変数宣言

private:

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

private:

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



cube1.tate = 2.0;

cube1.takasa = 4.0;



とりのぞいたなら


プログラムを実行できるんじゃないか?」


ソーラー「確かに それも そうですね😊


早速 そのプログラムを実行してみましょう。」


#include <iostream>


using namespace std;


class Cube {


public:

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


public:

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


public:

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.yoko = 3.0;

cube1.display();


return 0;

}



ビルド実行結果


エラー (アクティブ) E0020 識別子 "tate" が定義されていません エラー (アクティブ) E0020 識別子 "takasa" が定義されていません

エラー C2065 'tate': 定義されていない識別子です。

エラー C2065 'takasa': 定義されていない識別子です。



マックス「これは 一体??


なんで??


ビルド実行できない?」


てんC「Cubeのクラス宣言

👇

class Cube {


public: //🌞アクセス指定子はpublicです

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

private: //🌞アクセス指定子はprivateです

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

public: //🌞アクセス指定子はpublicです

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

private: //🌞アクセス指定子はprivateです

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

public: //🌞アクセス指定子はpublicです

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


};

👆

の中のメンバ変数宣言

private:

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

private:

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


が取り除かれている状態では



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

👇

void Cube::display() {


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

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

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

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


}

👆

内で


変数

tate

takasa

を使用することはできず


プログラムを実行すると


ビルドエラーが表示されるのですね




マックス「なるほどぉ


クラス内の


メンバ変数宣言

メンバ関数の定義内のメンバ変数



お互いが関係しあっているんだな」


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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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