我正在写一个库。带保留计数的C++基类
没有使用智能指针。它是否足够安全地模仿保留/释放行为?
或者是否有任何库已经在做这样的事情?
class FooBase {
private:
std::atomic<uint32_t> m_retainCount;
public:
FooBase()
{
m_retainCount = 1;
};
virtual ~FooBase()
{
assert(m_retainCount == 0); // Prevent from direct delete without release()
//clean-up if any
};
void *release()
{
m_retainCount--;
if (!m_retainCount)
delete this;
return this;
};
void *retain()
{
m_retainCount++;
return this;
};
};
以什么方式安全? – immibis
线程安全,您可以想到的任何问题。 – Wonson
为什么要编写一个不使用智能指针的库?由于缺乏编译器支持,我明白不能使用C++ 11和C++ 14的功能,但是不管怎么说,智能指针都支持*无处不在*。 –