2

この記事http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-on-writeに従って 、C++ でコピー オン ライト ポインターを実装する方法を試してみました。問題は、それがうまくいかないことです。

オブジェクトの核心は、逆参照演算子 (*) をオーバーロードして、非 const 参照を返す必要がある場合にバックグラウンド コピーを行うことです。

   const T& operator*() const
    {
        return *m_sp;
    }
    T& operator*()
    {
        detach();
        return *m_sp;
    }

残念ながら、これまでに実行されたのは 2 番目のバージョンだけのようです。指し示したオブジェクトをCアウトすると、次のようなことをしてもコピーが作成されます

   CowPtr<string> my_cow_ptr(new string("hello world"));
   const string& const_ref=*my_cow_ptr; 

detach()関数を実行させます 。

宣伝どおりに機能しない理由について何か考えはありますか?

4

1 に答える 1