Difference between revisions of "cpp/memory/shared ptr/pointer cast"
m (Text replace - "{{cpp|" to "{{c|") |
m (Text replace - "/sidebar" to "/navbar") |
||
Line 1: | Line 1: | ||
{{cpp/title | static_pointer_cast | dynamic_pointer_cast | const_pointer_cast}} | {{cpp/title | static_pointer_cast | dynamic_pointer_cast | const_pointer_cast}} | ||
− | {{cpp/memory/shared_ptr/ | + | {{cpp/memory/shared_ptr/navbar}} |
{{ddcl list begin}} | {{ddcl list begin}} | ||
{{ddcl list item | num=1 | notes={{mark since c++11}} | 1= | {{ddcl list item | num=1 | notes={{mark since c++11}} | 1= |
Revision as of 13:35, 15 June 2012
Template:ddcl list begin <tr class="t-dcl ">
<td >shared_ptr<T> static_pointer_cast( const shared_ptr<U>& r );
<td > (1) </td> <td > (since C++11) </td> </tr> <tr class="t-dcl ">
<td >shared_ptr<T> dynamic_pointer_cast( const shared_ptr<U>& r );
<td > (2) </td> <td > (since C++11) </td> </tr> <tr class="t-dcl ">
<td >shared_ptr<T> const_pointer_cast( const shared_ptr<U>& r );
<td > (3) </td> <td > (since C++11) </td> </tr>
Template:ddcl list end
Will return a new instance of std::shared_ptr with a casted managed object type from the r
's managed objet type. Both smart pointers will share the ownership of the managed object.
The resulting std::shared_ptr's managed object will be obtained by calling (in respective order):
1) static_cast<T*>(r.get())
.
2) dynamic_cast<T*>(r.get())
(If the result of the dynamic_cast
is 0, the returned shared_ptr will be empty).
3) const_cast<T*>(r.get())
.
In all case, if the parameter r
is an empty std::shared_ptr the result will be a new empty std::shared_ptr.
Parameters
r | - | The pointer to convert |