닥치고 shared_ptr 사용법입니다.


#include <iostream>
#include <vector>
#include <boost/shared_ptr.hpp>

using namespace std;
using namespace boost;

class ClassA
{
public:
	ClassA(){cout << "ClassA()" << endl;}
	~ClassA(){cout << "~ClassA()" << endl;}
	void hello(){cout << "# hello()" << endl;}
};

vector< shared_ptr<ClassA> > vec;

int main () {
	shared_ptr<ClassA> obj(new ClassA()); 
	cout << "* use_count (new): " << obj.use_count() << endl;

	vec.push_back(obj);
	cout << "* use_count (push): " << obj.use_count() << endl;

	obj->hello();

	vec.pop_back();
	cout << "* use_count (pop): " << obj.use_count() << endl;

	obj.reset(new ClassA());
	cout << "* use_count (reset): " << obj.use_count() << endl;

  return 0;
}


Output:
1
2
3
4
5
6
7
8
9
ClassA()
* use_count (new): 1
* use_count (push): 2
# hello()
* use_count (pop): 1
ClassA()
~ClassA()
* use_count (reset): 1
~ClassA()

+ Recent posts