Smart pointers have been the subject of hecatombs of code written and rivers of ink consumed by programmers and writers around the world. Perhaps the most popular, intricate, and powerful C++ idiom, smart pointers are interesting in that they combine many syntactic and semantic issues. This chapter discusses smart pointers, from their simplest aspects to their most complex ones and from the most obvious errors in implementing them to the subtlest ones—some of which also happen to be the most gruesome.
In brief, smart pointers are C++ objects that simulate simple pointers by implementing
operator-> and the unary
operator*. In addition to sporting pointer syntax and semantics, smart pointers often perform useful tasks—such as ...