Cpp クラス デストラクタ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(クラス デストラクタ)
(クラス デストラクタ)
19行: 19行:
  
  
 ポインタ変数を定義した時点、図の★の部分では、char* pcA;となっていて、図では、何もないchar型の大きさを知る穴あきの枠組プレートみたいなものが準備されます。この時点ではメモリ空間のポインタ変数がさすためのアドレス格納の旗みたいなものがあって、そこに32bitのメモリアドレスを保持できるのですが、最初は何も入ってい状態になります。旗があって枠がある。そんなイメージですね。図の中では間違えて16bitアドレスの場合と書いてますが、32bitが正しいです。そうするとアドレス範囲は0x00000000~0xffffffffで、この範囲の値が入る予定です。このアドレスを格納するアドレスだけは宣言した時点で決まります。それが図の例だと0x000100a0だとしています。これは &pcAとして取得できるモノです。実際には取得することはしないはずです。ポインタ変数にアドレス演算子を接頭句につけて使うことは、まずないでしょう。総じていうと、この時点でのpcAという変数は役立たずといってよいでしょう。変数を入れる領域についてのうつわ、箱、受け皿、そういったものすら用意できていないのです。変数を使うための準備はしたっていう感じです。指し示すことができるのは1byteの領域で基本charという型を指すことができて、そのアドレスを受け入れる器だけは準備した状態です。中身はまだない。吾輩は猫である名前はまだない。そんな感じです。
+
 ポインタ変数を定義した時点、図の★の部分では、char* pcA;となっていて、図では、何もないchar型の大きさを知る穴あきの枠組プレートみたいなものが準備されます。この時点ではメモリ空間のポインタ変数がさすためのアドレス格納の旗みたいなものがあって、そこに32bitのメモリアドレスを保持できるのですが、最初は何も入ってい状態になります。旗があって枠がある。そんなイメージですね。図の中では間違えて16bitアドレスの場合と書いてますが、32bitが正しいです。そうするとアドレス範囲は0x00000000~0xffffffffで、この範囲の値が入る予定です。このアドレスを格納するアドレスだけは宣言した時点で決まります。それが図の例だと0x000100a0だとしています。これは &pcAとして取得できるモノです。実際には取得することはしないはずです。ポインタ変数にアドレス演算子を接頭句につけて使うことは、まずないでしょう。総じていうと、この時点でのpcAという変数は役立たずといってよいでしょう。変数を入れる領域についてのうつわ、箱、受け皿、そういったものすら用意できていないのです。変数を使うための準備はしたっていう感じです。指し示すことができるのは1byteの領域で基本charという型を指すことができて、そのアドレスを受け入れる器だけは準備した状態です。中身はまだない。吾輩は猫である名前はまだない。そんな感じです。この状態のポインタ変数はヌルポインタと呼ばれます。
  
  
29行: 29行:
  
 
 上記のような操作を行った結果、0x0000ffa0からの1byteがpcAが指し示すchar型の変数として、ただの枠だった、役立たずが、実体化をへて、実体を作りました。このようにして実体化されたものをまさに<span style = "background:linear-gradient(transparent 50%, #ff7f7f 50%); font-weight:bold; ">実体</span>とか<span style = "background:linear-gradient(transparent 50%, #ff7f7f 50%); font-weight:bold; ">Instance<span>(</span>インスタンス<span>)</span></span>と呼んでいます。インスタンスという聞きなれないかもしれないカタカナ言葉はこの先、かなり使う専門用語になります。プログラミングを続けるなら、この解説の文を読むなら覚えておくべきだと思います。
 
 上記のような操作を行った結果、0x0000ffa0からの1byteがpcAが指し示すchar型の変数として、ただの枠だった、役立たずが、実体化をへて、実体を作りました。このようにして実体化されたものをまさに<span style = "background:linear-gradient(transparent 50%, #ff7f7f 50%); font-weight:bold; ">実体</span>とか<span style = "background:linear-gradient(transparent 50%, #ff7f7f 50%); font-weight:bold; ">Instance<span>(</span>インスタンス<span>)</span></span>と呼んでいます。インスタンスという聞きなれないかもしれないカタカナ言葉はこの先、かなり使う専門用語になります。プログラミングを続けるなら、この解説の文を読むなら覚えておくべきだと思います。
 +
 +
 +
 ちなみにnewで実体化しようとして、メモリが足りないとかの理由で、何も指し示さない状態で、ポインタ変数の中身を参照しようとすると、エラーになります。ヌルポインタによるエラー(例外)が発生したと表現でき、専門用語で、ヌルポインターエクセプションと言います。エクセプションはexceptionという英語で日本語の意味としては例外という意味が有ります。こういった例外が発生しそうな処理に対して工夫をするのが例外処理というものですが、例外が発生しそうな時に行う処理の説明をすると長くなるので、別の記事で例外処理という項目を作る予定なので、そこでまた説明することにしましょう。
  
  

2020年7月10日 (金) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス