🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
aのクラスの静的メンバ変数宣言、aのクラスのメンバ変数宣言を両方とも実行することによりクラスのメンバ関数内でクラスの静的メンバ変数を使用することができます
aのクラスの静的メンバ変数宣言、aのクラスのメンバ変数宣言を両方とも実行することによりクラスのメンバ関数内でクラスの静的メンバ変数を使用することができます
マックス「💡ぴっかぴかぴかりり~ん」
ぶーにゃん「にゃ~んん(´▽`*)」
マックス「
そうだ
int Cube::a;
を
Cubeのクラス宣言
👇
class Cube{
public:
int no; //変数noはクラスCubeのメンバ変数とよばれます
public:
float tate; //変数tateはクラスCubeのメンバ変数とよばれます
public:
float yoko; //変数yokoはクラスCubeのメンバ変数とよばれます
public:
float takasa; //変数takasaはクラスCubeのメンバ変数とよばれます
public:
Cube();
/*🌞🌞🌞クラスCubeのコンストラクタCube() のメンバ関数宣言を行っています*/
public:
void display(); //自作関数display()のクラスCubeのメンバ関数宣言を行っています
public:
static int a;
/*🌞🌞🌞ここですよ~ん🌞🌞🌞
静的メンバ変数aのCubeのメンバ変数宣言を行っています*/
};
👆
の後、
main関数の前
で
実行したならば
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行して
オブジェクトcube1を作製した場合
生成される
オブジェクトcube1の静的メンバ変数
cube1.aに
cube1.a=0;
のように
直接
数値を代入して
初期化できるようになるわけだ。
int Cube::a;
を
Cubeのクラス宣言の後、
main関数の前
で
実行して
はじめて
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.aが初めて機能するというわけだ
そう
となれば、だ
int Cube::a;
が設定された
この状態ならば
クラスCubeのメンバ関数display()の定義を
void Cube::display() {
a=0;
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "cube1.aは" <<a<< "に初期化されました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
のように
設定しておけば
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行したときに
生成される
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display()
を実行して
間接的に
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
を
0
に
初期化できるんじゃないか
つまり
もうすこしわかりやすく言い換えると
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
を実行すれば
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display()
が生成されて使用することができるようになる
そして
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display();
を実行すれば
クラスCubeのメンバ関数display()の定義の
👇
void Cube::display() {
a=0;
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "cube1.aは" <<a<< "に初期化されました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
のブロック内の
a=0;
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "cube1.aは" <<a<< "に初期化されました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
の
a
no
tate
yoko
takasa
に
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が代入されたものが
実行されるはずだろ
そのとき
a
は
cube1.a
を表すことになるので
クラスCubeのメンバ関数display()の定義のブロック内の
a=0;
は
cube1.a=0;
となり
間接的に
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
を
cube1.a=0;
と
初期化することができるんじゃないか?
そのプログラムを実行だ(´▽`*)
やっぱりぃ 俺ぇ
頭 いいいいいいいいんんんんんんんんんんんんん~~~~~~~~~」
そのプログラムは以下のようになります
👇
#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:
Cube();
/*🌞🌞🌞クラスCubeのコンストラクタCube() のメンバ関数宣言を行っています*/
public:
void display(); //自作関数display()のクラスCubeのメンバ関数宣言を行っています
public:
static int a;
/*🌞🌞🌞ここですよ~ん🌞🌞🌞
静的メンバ変数aのCubeのメンバ変数宣言を行っています*/
};
Cube::Cube() {
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "生成されたオブジェクトのメンバ変数を初期化しました" << "\n";
}
/*👆🌞
クラスCubeのコンストラクタCube()の定義を行っています
*/
void Cube::display() {
a=0;
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "cube1.aは" <<a<< "に初期化されました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
int Cube::a;
//🌞🌞🌞ここです aのメンバ変数宣言を実行しました。🌞🌞🌞
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
/*🌞このとき オブジェクトcube1のコンストラクタが自動的に実行されています*/
cube1.display();
return 0;
}
プログラムの実行結果
生成されたオブジェクトのメンバ変数を初期化しました
cube1.aは0に初期化されました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
マックス「やったな(´▽`*)/
ビルド実行に成功したぜ
int Cube::a;
を
Cubeのクラス宣言の後、
main関数の前
で
実行したならば
クラスCube型のオブジェクトcube1の静的メンバ関数
cube1.display();
の実行を通して
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
を
初期化できるってわけだ。」
てんC「そうなんです。
マックスさん
int Cube::a;
を
Cubeのクラス宣言の後、
main関数の前
で
実行することにより
クラスCubeのメンバ関数display()
の定義内で
クラスCubeの静的メンバ変数aをもちいることができるようになりますが
もし
int Cube::a;
を
Cubeのクラス宣言の後、
main関数の前
で
実行しなければ
クラスCubeのメンバ関数display()の定義
void Cube::display() {
a=0;
no = 0;
tate = 0;
yoko = 0;
takasa = 0;
cout << "cube1.aは" <<a<< "に初期化されました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
内で
クラスの静的メンバ変数a
をもちいることはできません。
そのように
クラスCubeのメンバ関数display()の定義内で
クラスCubeの静的メンバ変数a
が使用されていると
プログラムの実行時
ビルドエラーが表示されることになります。」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます