CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 22 Jul 2025 18:23:02 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/memory/shared_ptr/shared_ptr/
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 22 Jul 2025 18:23:02 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"a444-rJVwyRsN14uOrFt8EgKFV2P5OMM"
Content-Encoding: gzip
Constructs a shared_ptr object, depending on the signature used:
Output:
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<memory>
classes
- allocator
-
allocator_arg_tC++11
-
allocator_traitsC++11
- auto_ptr
- auto_ptr_ref
-
bad_weak_ptrC++11
-
default_deleteC++11
-
enable_shared_from_thisC++11
-
owner_lessC++11
-
pointer_traitsC++11
- raw_storage_iterator
-
shared_ptrC++11
-
unique_ptrC++11
-
uses_allocatorC++11
-
weak_ptrC++11
enum classes
-
pointer_safetyC++11
-
functions
-
addressofC++11
-
alignC++11
-
allocate_sharedC++11
-
const_pointer_castC++11
-
declare_no_pointersC++11
-
declare_reachableC++11
-
dynamic_pointer_castC++11
-
get_deleterC++11
-
get_pointer_safetyC++11
- get_temporary_buffer
-
make_sharedC++11
- return_temporary_buffer
-
static_pointer_castC++11
-
undeclare_no_pointersC++11
-
undeclare_reachableC++11
- uninitialized_copy
-
uninitialized_copy_nC++11
- uninitialized_fill
- uninitialized_fill_n
-
objects
-
allocator_argC++11
-
shared_ptr
-
shared_ptr::~shared_ptrC++11
-
shared_ptr::shared_ptrC++11
member functions
-
shared_ptr::getC++11
-
shared_ptr::operator boolC++11
-
shared_ptr::operator->C++11
-
shared_ptr::operator*C++11
-
shared_ptr::operator=C++11
-
shared_ptr::owner_beforeC++11
-
shared_ptr::resetC++11
-
shared_ptr::swapC++11
-
shared_ptr::uniqueC++11
-
shared_ptr::use_countC++11
-
non-member overloads
-
operator<< (shared_ptr)C++11
-
relational operators (shared_ptr)C++11
-
swap (shared_ptr)C++11
-
- Reference
- <memory>
- shared_ptr
- shared_ptr
public member function
<memory>
std::shared_ptr::shared_ptr
default (1) | constexpr shared_ptr() noexcept; |
---|---|
from null pointer (2) | constexpr shared_ptr(nullptr_t) : shared_ptr() {} |
from pointer (3) | template <class U> explicit shared_ptr (U* p); |
with deleter (4) | template <class U, class D> shared_ptr (U* p, D del);template <class D> shared_ptr (nullptr_t p, D del); |
with allocator (5) | template <class U, class D, class Alloc> shared_ptr (U* p, D del, Alloc alloc);template <class D, class Alloc> shared_ptr (nullptr_t p, D del, Alloc alloc); |
copy (6) | shared_ptr (const shared_ptr& x) noexcept;template <class U> shared_ptr (const shared_ptr<U>& x) noexcept; |
copy from weak (7) | template <class U> explicit shared_ptr (const weak_ptr<U>& x); |
move (8) | shared_ptr (shared_ptr&& x) noexcept;template <class U> shared_ptr (shared_ptr<U>&& x) noexcept; |
move from managed (9) | template <class U> shared_ptr (auto_ptr<U>&& x);template <class U, class D> shared_ptr (unique_ptr<U,D>&& x); |
aliasing (10) | template <class U> shared_ptr (const shared_ptr<U>& x, element_type* p) noexcept; |
Construct shared_ptr
- default constructor (1), and (2)
- The object is empty (owns no pointer, use count of zero).
- construct from pointer (3)
- The object owns p, setting the use count to 1.
- construct from pointer + deleter (4)
- Same as (3), but the object also takes ownership of deleter del (and uses it if at some point needs to delete p).
- construct from pointer + deleter + allocator (5)
- Same as (4), but any memory needed for internal use is allocated using alloc (of which the object keeps a copy, but does not take ownership).
- copy constructors (6)
- If x is not empty, the object shares ownership of x's assets and increases the use count.
If x is empty, an empty object is constructed (as if default-constructed). - copy from weak_ptr (7)
- Same as above (6), except that if x has expired, a bad_weak_ptr exception is thrown.
- move constructors (8)
- The object acquires the content managed by x including its owned pointer. x becomes an empty object (as if default-constructed).
- move from other types of managed pointers (9)
- The object acquires the content managed by x and sets the use count to 1. The ceding object becomes empty, automatically losing ownership of the pointer.
- aliasing constructor (10)
-
Same as (6), except that the stored pointer is p.
The object does not own p, and will not manage its storage. Instead, it co-owns x's managed object and counts as one additional use of x. It will also delete x's pointer on release (and not p).
It can be used to point to members of objects that are already managed.
Parameters
- p
- Pointer whose ownership is taken over by the object.
This pointer value shall not be already managed by any other managed pointer (i.e., this value shall not come from calling member get on a managed pointer).
U* shall be implicitly convertible to T* (where T is shared_ptr's template parameter).
- del
- Deleter object to be used to release the owned object.
This shall be a callable object taking a pointer to T as argument for its functional call (where T is shared_ptr's template parameter). - alloc
- Allocator object used to allocate/deallocate internal storage.
- x
- An object of a managed pointer type.
U* shall be implicitly convertible to T* (where T is shared_ptr's template parameter).
Example
|
|
Output:
use_count: p1: 0 p2: 0 p3: 1 p4: 1 p5: 2 p6: 0 p7: 2 p8: 1 p9: 2 |
See also
- shared_ptr::operator=
- shared_ptr assignment (public member function)
- shared_ptr::reset
- Reset pointer (public member function)
- shared_ptr::~shared_ptr
- Destroy shared_ptr (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us