「インスタンス」の版間の差分
imported>Administrator |
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: コンピューター]] | |||