「インスタンス」の版間の差分

imported>Administrator
 
編集の要約なし
 
30行目: 30行目:


Objective-C以外の多くの[[言語]]では「new」とするだけで一発で行うことができる。
Objective-C以外の多くの[[言語]]では「new」とするだけで一発で行うことができる。
このような場合でも内部的にはメモリ確保(alloc)と初期化(init)は別々に実行されている。<syntaxhighlight>
このような場合でも内部的にはメモリ確保(alloc)と初期化(init)は別々に実行されている。<syntaxhighlight lang=c++>
Class instance = new Class();
Class instance = new Class();
</syntaxhighlight>
</syntaxhighlight>
36行目: 36行目:
ここで注意しなければならないのは「newであっても、内部は2挙動であり、その2挙動は連続実行されるとは限らない」という点である。
ここで注意しなければならないのは「newであっても、内部は2挙動であり、その2挙動は連続実行されるとは限らない」という点である。


たとえば[[C#]]ではその2挙動は連続実行される。一方で[[Java]]ではnewすると即座にメモリ確保だけは行われるが、初期化はそのインスタンスの「最初の利用時」に実行される。<syntaxhighlight lang="java">
たとえば[[C#]]ではその2挙動は連続実行される。一方で[[Java]]ではnewすると即座にメモリ確保だけは行われるが、初期化はそのインスタンスの「最初の利用時」に実行される。
<syntaxhighlight lang="java">
// newでメモリ確保が実行される
// newでメモリ確保が実行される
Class instance = new Class();
Class instance = new Class();
51行目: 52行目:
* [[自己参照]]
* [[自己参照]]
* [[関数ポインタ]]
* [[関数ポインタ]]
[[category: プログラミング]]
[[category: コンピューター]]