写时复制指针对象



我试着去看这篇文章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;
    }

遗憾的是,似乎只有第二个版本运行过。c -out的指向对象创建一个副本,甚至做一些像

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

导致detach()函数运行。

你知道为什么它不像宣传的那样工作吗?

const成员函数将在const对象上调用。所以:

const CowPtr<std::string> my_const_cow_ptr(new std::string("Hello, world"));
const std::string& str = *my_const_cow_ptr;

CowPtr<std::string> my_cow_ptr(new std::string("Hello, world"));
const std::string& str = *static_cast<const CowPtr<std::string>&>(my_cow_ptr);

相关内容

  • 没有找到相关文章

最新更新