• The smart pointer is a template allocated to the stack using a raw
pointer that is allocated to the heap.
• The smart pointer deallocates the raw pointer automatically when the
smart pointer goes out of scope.
• Smart pointers are analogous to a garbage collector
• However, other languages implement garbage collectors as separate
processes
• unique_ptr requires very little overhead
Not Recommended:
void UseRawPointer()
{
// Using a raw pointer -- not recommended.
Song* pSong = new Song("Nothing on You",
"Bruno Mars");
// Use pSong...
// Don't forget to delete!
delete pSong;
}
Recommended
void UseSmartPointer()
{
// Declare a smart pointer on stack and pass it the raw pointer.
unique_ptr<Song> song2(new Song("Nothing on You",
"Bruno Mars"));
// Use song2...
string s = song2->duration_;
//...
} // song2 is deleted automatically here.