It is obviously very important that the resource management objects do not mismanage the resources they are entrusted to guard. Unfortunately, the simple RAII objects we have been writing so far have several glaring holes.
The first problem arises when someone tries to copy these objects. Each of the RAII objects we have considered in this chapter is responsible for managing a unique instance of its resource, and yet, nothing prevents us from copying this object:
scoped_ptr<object_counter> p(new object_counter);scoped_ptr<object_counter> p1(p);
This code invokes the default copy constructor, which simply copies the bits inside the object; in our case, the pointer is ...