时,需要为自定义类型提供一个内部引用计数器的实现。
#include <iostream>
#include <boost/smart_ptr.hpp>
#include <boost/smart_ptr/intrusive_ref_counter.hpp>
using namespace std;
using namespace boost;
struct data
{
int m_count = 0;
~data()
{
cout << "结束." << endl;
}
};
// 递增
void intrusive_ptr_add_ref(data* p)
{
p->m_count = p->m_count + 10;
}
// 递减
void intrusive_ptr_release(data* p)
{
if (--p->m_count == 0)
{
delete p;
}
}
int main(int argc,char *argv[])
{
// 使用自定义引用计数
typedef intrusive_ptr<data> counted_ptr;
counted_ptr p(new data);
std::cout << "引用数: " << p->m_count << std::endl;
counted_ptr weak_p(p.get(), false);
std::cout << "引用数: " << p->m_count << std::endl;
std::system("pause");
return 0;
}
本文作者: 王瑞
本文链接: https://www.lyshark.com/post/bc8ff67e.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!