Contents
When to use smart pointers?
Smart pointers are used to make sure that an object is deleted if it is no longer used (referenced). The unique_ptr<> template holds a pointer to an object and deletes this object when the unique_ptr<> object is deleted.
Why do we need raw pointers in smart pointers?
Smart pointers should be preferred over ‘raw’ pointers. If you feel you need to use pointers (first consider if you really do) you would normally want to use a smart pointer as this can alleviate many of the problems with ‘raw’ pointers, mainly forgetting to delete the object and leaking memory.
Can you use smart pointers and raw pointers in the same program?
C++ Standard Library smart pointers have a get member function for this purpose, and CComPtr has a public p class member. By providing direct access to the underlying pointer, you can use the smart pointer to manage memory in your own code and still pass the raw pointer to code that does not support smart pointers.
When to use a special case smart pointer?
Special-case smart pointer for use in conjunction with shared_ptr. A weak_ptr provides access to an object that is owned by one or more shared_ptr instances, but does not participate in reference counting. Use when you want to observe an object, but do not require it to remain alive.
How are smart pointers used in the C + + library?
C++ Standard Library smart pointers have a get member function for this purpose, and CComPtr has a public p class member. By providing direct access to the underlying pointer, you can use the smart pointer to manage memory in your own code and still pass the raw pointer to code that does not support smart pointers.
Which is the get member of a smart pointer?
Smart pointers usually provide a way to access their raw pointer directly. C++ Standard Library smart pointers have a get member function for this purpose, and CComPtr has a public p class member.
How to declare a smart pointer as a local variable?
Declare the smart pointer as an automatic (local) variable. (Do not use the new or malloc expression on the smart pointer itself.) In the type parameter, specify the pointed-to type of the encapsulated pointer. Pass a raw pointer to a new-ed object in the smart pointer constructor.