🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
オブジェクトbのメンバ変数を用いて動的にメモリを確保しオブジェクトbでオブジェクトaを初期化するとオブジェクトb,オブジェクトaのメンバ変数ともに動的に確保したメモリのアドレスを格納することになります
オブジェクトbのメンバ変数を用いて動的にメモリを確保しオブジェクトbでオブジェクトaを初期化するとオブジェクトb,オブジェクトaのメンバ変数ともに動的に確保したメモリのアドレスを格納することになります
ソーラー「おさらいです
例えば
次のような
クラスSuutitoMojiがあるとします。
クラスSuutitoMojiのクラス宣言は次のように設定されているとします」
👇
class SuutitoMoji{
public:
int x;
public:
char* i;
};
ソーラー「
このクラスSuutitoMojiのように
クラスSuutitoMojiのメンバ関数宣言に
char*型のポインタ変数宣言
char* i;
が設定されているとします
このとき
bのクラスSuutitoMoji型のオブジェクト宣言
SuutitoMoji b;
を実行して生成される
char*型のポインタ変数であるクラスSuutitoMoji型のオブジェクトbのメンバ変数
b.i
を用いて
b.i=new char[50];
のように
動的にメモリ領域を確保したとします
すると
このとき
クラスSuutitoMoji型のオブジェクトbのメンバ変数
b.iには
動的に確保したメモリ領域の先頭のメモリのアドレスが代入されています
続いて
クラスSuutitoMoji型のオブジェクトa
を
クラスSuutitoMoji型のオブジェクトb
で
初期化する命令文
SuutitoMoji a = b;
を実行したならば
クラスSuutitoMoji型のオブジェクトaのメンバ変数a.i
と
クラスSuutitoMoji型のオブジェクトbのメンバ変数b.i
は
ともに動的に確保したメモリ領域の先頭のメモリのアドレスを格納することになります
なぜなら
さきほど
b.i=new char[50];
を実行したとき
クラスSuutitoMoji型のオブジェクトbのメンバ変数
b.iには
動的に確保したメモリ領域の先頭のメモリのアドレスが代入されているからです
ですから
SuutitoMoji a = b;
を実行して
a.i=b.i;
が実行されると
クラスSuutitoMoji型のオブジェクトaのメンバ変数
a.iにも
動的に確保したメモリ領域の先頭のメモリのアドレスが代入されることになります
もちろん
a.iとb.iに同じアドレスが格納されているといっても
クラスSuutitoMoji型のオブジェクトaのメンバ変数
a.i
と
クラスSuutitoMoji型のオブジェクトbのメンバ変数
b.i
は
🌞お互い独立したメモリを管理しており🌞
クラスSuutitoMoji型のオブジェクトaのメンバ変数
a.i
に格納されているアドレスを変更したとしても
クラスSuutitoMoji型のオブジェクトbのメンバ変数
b.i
に格納されているアドレスは変更されないし
クラスSuutitoMoji型のオブジェクトbのメンバ変数
b.i
に格納されているアドレスを変更したとしても
クラスSuutitoMoji型のオブジェクトaのメンバ変数
a.i
に格納されているアドレスは変更されないんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます