C++11(14) - Smart Pointer

 

#include <iostream>
#include <future>
#include <thread>

using namespace std;
class Person
{
public:
Person(int v) {
value = v;
std::cout << "Construct: " << value << std::endl;
}
~Person() {
std::cout << "Destruct: " << value << std::endl;
}

int value;

};

 

int main()
{

std::shared_ptr<int> pi(new int(5));
// get original pointer
int *pt = pi.get();


std::shared_ptr<Person> p1(new Person(1));
// Person(1) reference count = 1

std::shared_ptr<Person> p2 = std::make_shared<Person>(2);
// Person(2) reference count = 1

p1.reset(new Person(3));
// Person(1) reference count = 0
// Person(3) reference count = 1

std::shared_ptr<Person> p3 = p1;
// Person(3) reference count = 2

p1.reset();
// Person(3) reference count = 1
p3.reset();
// Person(3) reference count = 0

return 0;

// Person(2) reference count = 0
}

 

posted on 2018-04-26 10:58  fanbird2008  阅读(96)  评论(0)    收藏  举报

导航