4

私は特定の大きくて手入れの行き届いたオープンソースC++ライブラリを使用していて、フォームのコンストラクタを持っているクラス定義に出くわしました

class SomeClass {
    SomeClass( const boost::shared_ptr<SomeOtherClass>& );
}

私の質問はconst boost::shared_ptr<T>、参照によってを渡すことのポイントは何ですか?値による渡しに関連するオーバーヘッドは本当に無視できない量ですか、それとも私が気付いていない値によるboost::shared_ptr<T>渡しに他の種類の危険がありますか?boost::shared_ptr<T>

4

3 に答える 3

9

これを値で渡すとコピーされ、すべてのスレッド間で同期された参照カウントが増加します。間違いなく無視できません。

于 2012-05-05T02:15:20.580 に答える
1

をコピーすることによる(わずかな)オーバーヘッドを回避するだけでなくshared_ptr、ポインタのコピーを保持しないという意図を宣言することにもなります。shred_ptrを変更せずにコピーを作成することはできないと思います。それconstを防ぐことができます。

于 2012-05-05T02:15:37.133 に答える
1

コピーが必要ない場合は、なぜコピーを作成するのですか?とにかくそれを本文にコピーし始めたら、それは別の質問になるでしょう。

于 2012-05-05T02:20:15.537 に答える