new演算子を用いてクラスの型のデータ格納容量分メモリを確保し確保したメモリにデータを代入してみます
ソーラー「さて、さて それでは
クラスの型のデータ格納容量の意味が分かったところで
new演算子を用いて
次のようにクラス宣言された
クラスSuutiの型のデータ格納容量分のメモリ
を動的に確保してみたいと思います」
👇
class Suuti{
public:
int x;
float y;
public:
void suutidisplay();
};
void Suuti::suutidisplay() {
cout << x << "\n";
cout << y << "\n";
}
ソーラー「そのプログラムは
new演算子をクラスSuutiの型に用いた
次のようになります
#include <iostream>
using namespace std;
class Suuti{
public:
int x;
float y;
public:
void suutidisplay();
};
void Suuti::suutidisplay() {
cout << x << "\n";
cout << y << "\n";
}
int main() {
Suuti* a;
a = new Suuti;
a->x = 100;
a->y = 1.11;
cout << a->x << "\n";
cout << a->y << "\n";
return 0;
}
プログラムの実行結果
100
1.11
マックス「??
俺達なにやってるんだったけ?」
ソーラー「このプログラムでは
まず
aのクラスSuuti*型のポインタ変数宣言
Suuti* a;
により
クラスSuuti*型のポインタ変数aを生成しています。
そして
a = new Suuti;
の命令文が実行されていますね
まず
new Suuti
により
クラスSuutiの型に対応する8バイト分のメモリが
動的に確保されています
このとき
new Suutiには
動的に確保されたメモリのアドレスが戻り値として返されることになります
ですので
a = new Suuti;
が実行されると
Suuti*型のポインタ変数aに
動的に確保されたメモリの(メモリを代表する)アドレスが代入されることになります。
このとき動的に確保されたメモリには
ポインタ変数aにアロー演算子を用いた
a->x
a->y
を用いてアクセスし
数値データを代入することができます。
このプログラムでは
a->x = 100;
a->y = 1.11;
のように
数値データ
100
1.11
が代入されています
そして
cout << a->x << "\n";
cout << a->y << "\n";
の実行により
コマンドプロンプト画面に
100
1.11
が表示されています」
マックス「わかった
a->x のデータを格納する型はint型で
a->y のデータを格納する型はfloat型なので
a->x
には
100
a->y
には
1.11
を代入しているというわけだ」
ソーラー「そうなんです
そして
動的に確保されたメモリに
格納されたデータは
自分の好きなタイミングで
動的に確保されたメモリを解放し
動的に確保されたメモリに
格納されたデータを消去することができるのでした
好きなタイミングで
動的に確保されたメモリを解放するために
クラスSuuti型に対応する8バイト分のメモリを
動的に確保したというわけですね😊」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます