#include <map>
#include <string>
#include <iostream>
#include <memory>
class object
{
public:
object()
{
std::cout <<"defaut constructor" <<std::endl;
}
~object()
{
std::cout <<"deconstructor" <<std::endl;
}
object(const object& other)
{
std::cout <<"copy constructor" <<std::endl;
}
object& operator=(const object& other)
{
std::cout <<"==========" <<std::endl;
}
};
struct st
{
int value;
std::shared_ptr<object> p_obj;
st()
{
std::cout <<"st defaut constructor" <<std::endl;
value = 1;
p_obj = nullptr;
}
~st()
{
std::cout <<"st deconstructor" <<std::endl;
}
};
int main()
{
std::map<int, std::shared_ptr<st>>_map;
_map.clear();
std::shared_ptr<object> ptr(new object);
std::cout << ptr.use_count()<<std::endl;
std::shared_ptr<st> tmp(new st);
tmp->value = 2;
tmp->p_obj = ptr;
std::cout << ptr.use_count()<<std::endl;
_map.insert(std::map<int, std::shared_ptr<st>>::value_type(2, tmp));
std::cout << ptr.use_count()<<std::endl;
std::cout << ptr.use_count()<<std::endl;
int *num = new int(23);
std::shared_ptr<int> p1(num);
std::shared_ptr<int> p2(num);
}