I’ve read a reasonable amount in decent textbooks about the auto_ptr class. While I understand what it is, and how it gets you around the problem of getting exceptions in places like constructors, I am having trouble figuring out when someone would actually use it.
An auto_ptr can only hold a single type (no array new[] initialization is supported). It changes ownership when you pass it into functions or try and duplicate it (it’s not a reference counting smart pointer).
What is a realistic usage scenario for this class give its limitations? It seems like most of the textbook examples of its use are reaching because there isn’t even a reason to be using a pointer over a stack variable in most of the cases…
Anyway, I’ll stop my rant – but if you can provide a short example/description or a link to a good usage scenario for this I’d be grateful. I just want to know where I should use it in practice in case I come across the situation – I like to practice what I learn so I remember it.
I’ll give you a short example for a good usage. Consider this:
The function that raises an exception would normally cause your pointer to be lost, and the object pointed to would not be deleted. With the
auto_ptrthis can’t happen, since it is destroyed when it leaves the frame it was created, if it hasn’t been assigned (for example withreturn).