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