2016-01-17 11 views
6

Dはオブジェクトの所有権をどのように管理しますか?たとえば、私は、次の表現する必要があります。弱い参照またはポインタ

1.) Allocate an object 
2.) Give out references/pointers 
3.) If the initially allocated object is deleted, 
    all references/pointers should become inaccessible. 

C++では、これはstd::shared_ptr + std::weak_ptrで可能です。これはDでも可能ですか?

+0

オブジェクトのライフタイムを制御する方法を理解するには、https://dlang.org/spec/garbage.htmlを参照してください。 –

+0

@key_正しいリンクを投稿してもよろしいですか?私は人生の時間管理に関連する何かを見つけることができません。 –

+0

あなたは密封された参照を実装し、ポインタを渡すたびにポインタを保持することが望ましいでしょう。これらのポインタは、リストから自分自身を削除するために自分の生涯を意識したいと思うでしょう...かなりのオーバーヘッドが伴います。弱い参照自体は簡単です.GPがスキャンしないポインタを作成するか、refcountを増やさないだけですが、オブジェクトが削除されたときに無効にするポインタは難しくなります。 –

答えて

2

現時点ではD.

で弱参照のない優れた実装ではありませんこれらの二つのフォーラムのスレッドを確認してください:

誤った

または「ほとんどを正しい実装:

最大の問題は、あなたが弱参照の周りにGOOD APIが必要だということです。 Javaと.NETにはそれがあり、おそらくBADです。正当な理由のために、良いapiを考え出すのは難しいです!

+1

私は非常に多くのDフォーラムスレッドがURLにドル記号を持っていることを嫌いです。 Bah、それは多くのURL検出器を壊す。 –

関連する問題