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) 收藏 举报
浙公网安备 33010602011771号