🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
クラスのメンバ変数、メンバ関数にアクセス指定子を設定しない場合はアクセス指定子privateを設定したことになります
クラスのメンバ変数、メンバ関数にアクセス指定子を設定しない場合はアクセス指定子privateを設定したことになります
#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";
}
int main() {
Cube cube1;
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;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
アクセス指定子publicが指定されていると
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して生成された
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display()
を使用することができた。
ぶーにゃん「できにゃ」
マックス「
逆に
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
アクセス指定子privateが指定されていると
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して生成される
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
と
オブジェクトcube1のメンバ関数
cube1.display()
を使用することはできなかった。」
ぶーにゃん「にゃにゃ」
マックス「
それなら
最初から
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
なにもアクセス指定子を設定しなかったらどうなるんだ
次のクラス宣言のようにだ
👇
class Cube {
int no;
float tate;
float yoko;
float takasa;
void display();
};
👆
こんな具合にな
このクラスを用いた
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して生成される
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
と
オブジェクトcube1のメンバ関数
cube1.display()
を使用することはできるのかな?
どうなると思う?
てんCよ」
てんC「・・・どうでしょうか・・・??
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
なにもアクセス指定子を設定しないのであれば
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
と
オブジェクトcube1のメンバ関数
cube1.display()
を作製した場合
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display()
ともに
使用することができるような気がしますね」
ソーラー「そうだね。 僕もそんな感じがしちゃうな」
ソーラー「それでは
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
なにもアクセス指定子を設定しない状態の
クラス宣言
class Cube {
int no;
float tate;
float yoko;
float takasa;
void display();
};
を用いたプログラムを実行してみよう。
さあ どうなるかな?」
#include <iostream>
using namespace std;
class Cube {
//💖アクセス指定子を設定していません
int no;
float tate;
float yoko;
float takasa;
void display();
};
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
int main() {
Cube cube1;
cube1.no = 1;
cube1.tate = 2.0;
cube1.yoko = 3.0;
cube1.takasa = 4.0;
cube1.display();
return 0;
}
ソーラー「それでは ビルドっ」
プログラムの実行結果
エラー (アクティブ) E0265 関数 "Cube::display" (宣言された 行 15) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::yoko" (宣言された 行 9) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::tate" (宣言された 行 8) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::takasa" (宣言された 行 10) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::no" (宣言された 行 7) にアクセスできません
エラー C2248 'Cube::yoko': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::tate': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::takasa': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::no': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::display': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
マックス「
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行しても
全然
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display()
にアクセスできなくなっているぞ
俺ってきまってるなあ は~~~はっはぁぁ~~」
🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞
このように
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
にアクセス指定子を設定しないと
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
オブジェクトcube1のメンバ関数
cube1.display()
を生成しても使用できなくなります
つまり
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
なにもアクセス指定子を設定しないと
クラスCubeのメンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
と
メンバ関数宣言
void display();
に
アクセス指定子privateが設定されたことに等しくなります
solarplexussより
🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞 🌞
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます