🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
クラスのメンバ変数宣言のアクセス指定子がprivateでもメンバ関数宣言がpublicならオブジェクトのメンバ関数を実行してオブジェクトのメンバ変数に格納されている数値を変更することができます
クラスのメンバ変数宣言のアクセス指定子がprivateでもメンバ関数宣言がpublicならオブジェクトのメンバ関数を実行してオブジェクトのメンバ変数に格納されている数値を変更することができます
つづきです
マックス「そう
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっていても
メンバ関数宣言
void display(int a, float b, float c, float d);
に設定されている
アクセス指定子はpublicなので
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
は実行することができるんじゃないか?
cube1.display(5,6.0,7.0,8.0);
が実行できたなら
クラスCubeのメンバ関数displayの定義
👇
void Cube::display(int a, int b, int c, int d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
の
a
b
c
d
に
5
6.0
7.0
8.0
が代入され
no
tate
yoko
takasa
に
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が代入された
cube1.no = 5;
cube1.tate = 6.0;
cube1.yoko = 7.0;
cube1.takasa = 8.0;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
が実行されて
プログラムの実行結果
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
が表示されるはずじゃないか(*^▽^*)
つまり
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっているので
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することができず
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
直接
数値データ
5
6.0
7.0
8.0
を
cube1.no=5;
cube1.tate=6.0;
cube1.yoko=7.0;
cube1.takasa=8.0;
と
代入することはできなくても
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
間接的に
数値データ
5
6.0
7.0
8.0
を
代入できるんじゃないか?
それとも
やはり
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっていると
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することができないので
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
を実行しても
no
tate
yoko
takasa
に
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が代入されるようなことはおこらず
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
間接的に
数値データ
5
6.0
7.0
8.0
を
代入することはできないのか?」
ソーラー「そうですね・・・
面白くなってきたね
それでは
いよいよ
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっていても
メンバ関数宣言
void display(int a, int b, int c, int d);
に設定されている
アクセス指定子がpublicならば
main関数内で
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
を実行して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
数値データ
5
6.0
7.0
8.0
を
代入できるかどうか
プログラムを実行して確かめてみたいとおもいます」
そのプログラムはこちらです
👇
#include <iostream>
using namespace std;
class Cube {
private:
int no;
private:
float tate;
private:
float yoko;
private:
float takasa;
public://🌞ここに注目 アクセス指定子がpublicになっています
void display(int a, float b, float c, float d);
};
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
int main() {
Cube cube1;
cube1.display(5, 6.0, 7.0, 8.0);
return 0;
}
ビルド実行結果
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
ソーラー「クラスのメンバ関数
void display(int a, float b, float c, float d)の定義は
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
となっています。
cube1.display(5, 6.0, 7.0, 8.0);
が実行されると
cube1.no = 5;
cube1.tate = 6.0;
cube1.yoko = 7.0;
cube1.takasa = 8.0;
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
が実行されることになります
ですので
ビルド実行結果
立方体につけられたナンバーは5です
立方体の縦の長さは6です
立方体の横の長さは7です
立方体の高さの長さは8です
が表示されるというわけです
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
数値データ
5
6.0
7.0
8.0
が代入されているのがわかりますね。
つまり
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっていることにより
main関数内で
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を直接使用できないとしても
メンバ関数宣言
void display(int a, int b, int c, int d);
に設定されている
アクセス指定子がpublicに設定されていれば
main関数内で
オブジェクトcube1のメンバ関数
cube1.display(5,6.0,7.0,8.0);
を実行することができ
間接的に
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
数値データ
5
6.0
7.0
8.0
を
代入することができるのですね😊」
マックス「念を押して
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
数値データ
5
6.0
7.0
8.0
を
代入することができているかどうか
main関数内で
cube1.display(5,6.0,7.0,8.0);
のあとに
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
を
付け加えて実行して確かめてみたらいいんじゃないか?」
ソーラー「それは いいアイデアですね。
今のプログラムの
main関数内で
cube1.display(5,6.0,7.0,8.0);
の実行の後に
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
を
付け加えてみましょう。
そのプログラムはこちらです
👇
#include <iostream>
using namespace std;
class Cube {
private:
int no;
private:
float tate;
private:
float yoko;
private:
float takasa;
public://🌞ここに注目 アクセス指定子がpublicになっています
void display(int a, float b, float c, float d);
};
void Cube::display(int a, float b, float c, float d) {
no = a;
tate = b;
yoko = c;
takasa = d;
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
int main() {
Cube cube1;
cube1.display(5, 6.0, 7.0, 8.0);
//👇ここに付け加えましたです
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
//👆ここに付け加えましたです
return 0;
}
ビルド実行結果
エラー (アクティブ) E0265 メンバー "Cube::yoko" (宣言された 行 12) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::tate" (宣言された 行 10) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::takasa" (宣言された 行 14) にアクセスできません
エラー (アクティブ) E0265 メンバー "Cube::no" (宣言された 行 8) にアクセスできません
エラー (アクティブ) E0006 ファイルの末尾でコメントが閉じられていません 7
警告 C4244 '引数': 'double' から 'int' への変換です。データが失われる可能性があります。
エラー C2248 'Cube::yoko': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::tate': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::takasa': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
エラー C2248 'Cube::no': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。
警告 C4244 '=': 'int' から 'float' への変換です。データが失われる可能性があります。
警告 C4244 '=': 'int' から 'float' への変換です。データが失われる可能性があります。
警告 C4244 '=': 'int' から 'float' への変換です。データが失われる可能性があります。
ソーラー「ビルド実行できないね。
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
に設定されている
アクセス指定子がprivateになっているので
main関数内で
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
は使用できないから
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が用いられた命令文
cout << "立方体につけられたナンバーは" << cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" << cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" << cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" << cube1.takasa << "です" << "\n";
を
付け加えて
実行しようとすると
ビルドエラーが表示されるんだね。」
マックス「ふ~むぅ
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
のアクセス指定子が
privateに設定されていると
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を使用することができなくなる・・・か・・・
となると
main関数内で
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に直接
cube1.no=10000;
cube1.tate=10000;
cube1.yoko=10000;
cube1.takasa=10000;
のように数値データを代入することはできないし
オブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
に
格納されている数値データを利用したいとおもって
別の変数
e
f
g
h
に
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
を代入する
e=cube1.no;
f=cube1.tate;
g=cube1.yoko;
h=cube1.takasa;
を
実行するようなこともできないってわけだ
となると
Cubeのクラス宣言内の
メンバ変数宣言
int no;
float tate;
float yoko;
float takasa;
のアクセス指定子が
privateに設定されていると
意外と不便じゃないか?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます