unique_ptr etc

Started by
3 comments, last by sednihp 11 years, 4 months ago
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" ?
-----Quat
Advertisement
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.
If that object is owned by a shared_ptr you can use a weak_ptr.
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.

https://www.kbasm.com -- My personal website

https://github.com/wqking/eventpp  eventpp -- C++ library for event dispatcher and callback list

https://github.com/cpgf/cpgf  cpgf library -- free C++ open source library for reflection, serialization, script binding, callbacks, and meta data for OpenGL Box2D, SFML and Irrlicht.

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.

This topic is closed to new replies.

Advertisement