I'm trying to start integrating the new C++11 pointer types.
My understanding is:
1. Use unique_ptr for the pointer that is responsible for managing the object's life.
2. Use shared_ptr for a reference count like system.
If you just want a reference to an object, do you just use a "regular pointer" ?
unique_ptr etc
Preferably you would use a reference, but a normal pointer would work also, if you just want to refer to an existing object and not claim or affect its ownership status in any way.
In my code,
1, I use unique_ptr when possible if no need to share ownership. Then I pass raw pointer everywhere. When a function sees a raw pointer, it knows it should not free the pointer.
2, I use shared pointer when I have to share the ownership, but I would avoid it if possible. For shared pointer, I usually pass raw pointer to other functions too, unless the calling function will retain the ownership. Also, if an object doesn't need strong ownership, I use weak pointer when possible. I prefer weak pointer over shared pointer to avoid cycle reference.
3, I rarely use "delete" explicitly thanking to above two rules.
1, I use unique_ptr when possible if no need to share ownership. Then I pass raw pointer everywhere. When a function sees a raw pointer, it knows it should not free the pointer.
2, I use shared pointer when I have to share the ownership, but I would avoid it if possible. For shared pointer, I usually pass raw pointer to other functions too, unless the calling function will retain the ownership. Also, if an object doesn't need strong ownership, I use weak pointer when possible. I prefer weak pointer over shared pointer to avoid cycle reference.
3, I rarely use "delete" explicitly thanking to above two rules.
There's some good reading on smart pointers and example code here:
Smart pointers
That page has links to unique_ptr, shared_ptr and weak_ptr specific pages as well, all with examples.
Smart pointers
That page has links to unique_ptr, shared_ptr and weak_ptr specific pages as well, all with examples.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement