GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::shared_ptr::get(3) C++ Standard Libary std::shared_ptr::get(3)

std::shared_ptr::get - std::shared_ptr::get


T* get() const noexcept; (until C++17)
element_type* get() const noexcept; (since C++17)


Returns the stored pointer.


(none)


The stored pointer.


A shared_ptr may share ownership of an object while storing a pointer to another
object. get() returns the stored pointer, not the managed pointer.

// Run this code


#include <iostream>
#include <memory>
#include <string_view>


int main()
{
auto output = [](std::string_view msg, int const* pInt) {
std::cout << msg << *pInt << " in " << pInt << "\n";
};


int* pInt = new int(42);
std::shared_ptr<int> pShared = std::make_shared<int>(42);


output("Naked pointer ", pInt);
// output("Shared pointer ", pShared); // compiler error
output("Shared pointer with get() ", pShared.get());


delete pInt;


std::cout << "\nThe shared_ptr's aliasing constructor demo.\n";
struct Base1 { int i1{}; };
struct Base2 { int i2{}; };
struct Derived : Base1, Base2 { int i3{}; };


std::shared_ptr<Derived> p(new Derived());
std::shared_ptr<Base2> q(p, static_cast<Base2*>(p.get()));
std::cout << "q shares ownership with p, but points to Base2 subobject:\n"
<< "p.get(): " << p.get() << '\n'
<< "q.get(): " << q.get() << '\n'
<< "&(p->i1): " << &(p->i1) << '\n'
<< "&(p->i2): " << &(p->i2) << '\n'
<< "&(p->i3): " << &(p->i3) << '\n'
<< "&(q->i2): " << &(q->i2) << '\n';
}


Naked pointer 42 in 0xacac20
Shared pointer with get() 42 in 0xacac50


The shared_ptr's aliasing constructor demo.
q shares ownership with p, but points to Base2 subobject:
p.get(): 0xacac20
q.get(): 0xacac24
&(p->i1): 0xacac20
&(p->i2): 0xacac24
&(p->i3): 0xacac28
&(q->i2): 0xacac24


operator* dereferences the stored pointer
operator-> (public member function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.