Boost logo

Boost :

From: Kevin Atkinson (kevinatk_at_[hidden])
Date: 2000-03-06 15:15:43


On Mon, 6 Mar 2000, Kevin Atkinson wrote:

> template <typename T>
> CopyPtr<T> & CopyPtr<T>::operator= (const CopyPtr<T> & other)
> {
> delete ptr;
> if (other.ptr != 0)
> ptr = new T(*other.ptr);
> else
> ptr = 0;
> return *this;
> }

Here is a more complicated but more efficient operator=:

  template <typename T>
  CopyPtr<T> & CopyPtr<T>::operator= (const CopyPtr<T> & other)
  {
    if (other.ptr == 0) {
      delete ptr;
      ptr = 0;
    } else if (ptr == 0) {
      if (other.ptr == 0)
        ptr = 0;
      else
        ptr = new T(*other.ptr);
    } else {
      *ptr = *other.ptr;
    }
    return *this;
  }

---
Kevin Atkinson
kevinatk_at_[hidden]
http://metalab.unc.edu/kevina/

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk