c – シングル対共有の所有権の意味

ちょうどシングルと共有の所有権を見たときにRAIIのウィキペディアを読んでいました。

それのためにグーグルし、有用な答えを見つけることができなかった!

この概念を男子生徒に説明できる人もいるでしょうか。

ベストアンサー
これは本質的にunique_ptrとshared_ptrです。

単一所有権(別名、固有所有権)は、リソースが単一のクラスインスタンスによって所有されることを意味します。そのインスタンスが存在しなくなると、リソースは(デストラクタを介して)解放されます。あなたが見つけるRAIIクラスの大部分は、std :: vectorのように、独自の所有権を持っています。

共有所有権は、リソースが複数のクラスインスタンス間で共有されることを意味します。すべてのインスタンスが存在しなくなるとリソースが解放されるため、何らかの形の参照カウントまたはガベージコレクションが必要になります。共有所有権が必要な場所の例としては、非常に高価な不変リソースのコピーへのハンドルがあります。私はそれがグラフでも使われているのを見ました。

それはポインターの観点から考えるのを助けるかもしれません。単一の所有権には1つの所有ポインターしかなく、共有には複数の所有ポインターがあります。もちろん、RAIIはポインタを含まないかもしれません。

                    +---------------+
                    |Shared instance|
    +--------+      +------------+--+           +---------------+
    |Resource|                   |   +----------+Shared instance|
    +--------+                   v   v          +---------------+
        ^                    +--------+
        |                    |Resource|<-----------+
        |                    +--------+        +---+-----------+
        |                         ^            |Shared instance|
 +------+--------+                |            +---------------+
 |Unique Instance|                |
 +---------------+                |
                           +------+--------+
                           |Shared instance|
                           +---------------+

転載記事の出典を記入してください: c – シングル対共有の所有権の意味 - コードログ