クラスの静的メンバ変数aはクラスのメンバ関数の定義に用いることができます。
ソーラー「クラスの静的メンバ変数の仕組みが分かったところで
次のプログラムをみてほしいな。
#include <iostream>
using namespace std;
class Cube{
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
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 << "生成されたクラスCube型のオブジェクトのメンバ変数を初期化しました" << "\n";
}
/*👆🌞
クラスCubeのコンストラクタCube()の定義を行っています
🌞*/
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
int Cube::a = 1;
//👆🌞🌞🌞ここです🌞🌞🌞静的メンバ変数aの初期化を行っています
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
/*🌞このとき オブジェクトcube1のコンストラクタが自動的に実行されています*/
cout << "オブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは" << cube1.a << "です" << "\n";
cube1.display();
return 0;
}
ビルド実行結果
生成されたクラスCube型のオブジェクトのメンバ変数を初期化しました
オブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは1です
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
ソーラー「このプログラムでは
Cube cube1;
の実行により
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が生成されています
int Cube::a = 1;
により
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
の値は1になっているので
cout << "オブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは" << cube1.a << "です" << "\n";
が実行されると
クラスCube型のオブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは1です
が
コマンドプロンプト画面に表示されることになります
次に
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display();
が実行されています
つまり
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
によって作製された
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が
クラスCubeのメンバ関数display()の定義
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
の
no
tate
yoko
takasa
に代入された
cout << "立方体につけられたナンバーは" <<cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" <<cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" <<cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" <<cube1.takasa << "です" << "\n";
が
実行されています。
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
にはコンストラクタによって
0
0.0
0.0
0.0
が代入されているので
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
が表示されることになります
次に
クラスCubeのメンバ関数display()の定義を
void Cube::display() {
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
から
静的メンバ変数aを用いた
void Cube::display() {
cout <<a << "回目のオブジェクトのメンバ関数を実行しました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
に変更して
プログラムを実行してみます。」
#include <iostream>
using namespace std;
class Cube {
public:
int no;
public:
float tate;
public:
float yoko;
public:
float takasa;
public:
Cube();
/*🌞🌞🌞クラスCubeのコンストラクタCube() のメンバ関数宣言を行っています*/
public:
void display(); //自作関数display()のクラスCubeのメンバ関数宣言を行っています
public:
static int a;
/*🌞🌞🌞ここですよ~ん🌞🌞🌞
静的メンバ変数aのCubeのメンバ変数宣言を行っています*/
};
Cube::Cube() {
no = 0;
tate = 0.0;
yoko = 0.0;
takasa = 0.0;
cout << "生成されたクラスCube型のオブジェクトのメンバ変数を初期化しました" << "\n";
}
/*👆🌞
クラスCubeのコンストラクタCube()の定義を行っています
🌞*/
void Cube::display() {
cout <<a << "回目のオブジェクトのメンバ関数を実行しました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています
int Cube::a = 1;
//👆🌞🌞🌞ここです🌞🌞🌞静的メンバ変数aの初期化を行っています
int main() {
Cube cube1;
//👆cube1のクラスCube型のオブジェクト宣言をおこなっています
/*🌞このとき オブジェクトcube1のコンストラクタが自動的に実行されています*/
cout << "オブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは" << cube1.a << "です" << "\n";
cube1.display();
return 0;
}
生成されたクラスCube型のオブジェクトのメンバ変数を初期化しました
オブジェクトcube1の静的メンバ変数cube1.aに代入された数値データは1です
1回目のオブジェクトのメンバ関数を実行しました
立方体につけられたナンバーは0です
立方体の縦の長さは0です
立方体の横の長さは0です
立方体の高さの長さは0です
ソーラー「このプログラムでも
クラスCube型のオブジェクトcube1のメンバ関数
cube1.display();
が実行されています(´▽`*)
cube1のクラスCube型のオブジェクト宣言
Cube cube1;
によって作製された
クラスCube型のオブジェクトcube1の静的メンバ変数
cube1.a
クラスCube型のオブジェクトcube1のメンバ変数
cube1.no
cube1.tate
cube1.yoko
cube1.takasa
が
クラスCubeのメンバ関数display()の定義
void Cube::display() {
cout <<a << "回目のオブジェクトのメンバ関数を実行しました" << "\n";
cout << "立方体につけられたナンバーは" << no << "です" << "\n";
cout << "立方体の縦の長さは" << tate << "です" << "\n";
cout << "立方体の横の長さは" << yoko << "です" << "\n";
cout << "立方体の高さの長さは" << takasa << "です" << "\n";
}
の
a
no
tate
yoko
takasa
に代入された
cout <<cube1.a << "回目のオブジェクトのメンバ関数を実行しました" << "\n";
cout << "立方体につけられたナンバーは" <<cube1.no << "です" << "\n";
cout << "立方体の縦の長さは" <<cube1.tate << "です" << "\n";
cout << "立方体の横の長さは" <<cube1.yoko << "です" << "\n";
cout << "立方体の高さの長さは" <<cube1.takasa << "です" << "\n";
が実行されているというわけです(´▽`*)」
マックス「普通に
クラスCubeの静的メンバ変数aを
クラスCubeのメンバ関数の定義内に用いることができたな。
クラスCubeの静的メンバ変数も
クラスCubeのメンバ変数と同様に
クラスCubeのメンバ関数の定義内に用いることができるってわけか(´▽`*)。
まあ
普通といえば
普通のことだったか
っていうか
前のエピソードでやってこなかったか?」
ソーラー「びくぅ」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます