-
Book Overview & Buying
-
Table Of Contents
The C++ Workshop
By :
Prior to C++11, a more limited smart pointer called auto_ptr<> was available in the standard library. Among the many limitations of the auto_ptr<> template class was the fact that it could not be used as the element type in C++ standard library container classes or to transfer ownership of a dynamic variable out of a function. The standard library contained a reference-counted smart pointer class called shared_ptr<> that could be used in function arguments, return values, and standard library containers. For a few years, some teams used shared_ptr<> exclusively and forbade the use of raw pointers.
The problem with shared_ptr<> is that it is expensive in terms of runtime instructions. In addition to the dynamic variable that shared_ptr<> owns, it creates a second dynamic variable to hold a reference count, as shown in Figure 7.8, and deletes the reference count when the last reference is deleted. Every...