0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

インスタンス化に関して等、備忘録

Last updated at Posted at 2024-06-25

MyClass* obj;MyClass obj;

目を細めてみたら同じに見えるこの二つは大きく異なるようです。
前者はオブジェクトがインスタンス化されておらず、後者はインスタンス化されています。

前者(ポインタのほう)

MyClass* obj;
これはobjという、MyClass型のポインタ変数を作っただけです。obj = new MyClass();といった処理で初めてメモリが確保され、オブジェクトがインスタンス化されます。

他の例では、例えばint* xでは「int型のポインタ変数x」を宣言します。この時点ではメモリは確保されません。x = new int;とかを書いて初めてメモリが確保されます。

後者(ポインタじゃない変数の方)

MyClass obj;
これはオブジェクトがインスタンス化され、メモリも同時に確保されます。

以降は追記した細かい内容になります

new 演算子を使用した場合、その結果は自動的にポインタになる。

地味に知らなかった...いつも「なんで"&"がないんだ...?」ってなってたのでスッキリしました。ポインタにそのままpointa = new ...として代入できるんですね。

まとめ

順次わかりづらい部分を発見したら追記しようと思います。初学者の方々の助けになれば幸いです(僕も初学者ですが...)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?