出于引用计数的目的,在下面的示例代码中使用 std::tr1::shared_ptr 是否安全且正确?(这只是一个特定的示例,该类可以包含其他任何内容(void*)而不是 FILE*)
class File
{
public:
File(const char* path, const char* mode) :
_refcount(new int(0))
{
this->_file = fopen(path, mode);
}
~File()
{
if (this->_refcount.unique())
{
if (this->_file != NULL)
{
fclose(this->_file);
}
}
}
int write(void* buff, size_t size)
{
fwrite(buff, size, 1, this->_file);
}
private:
FILE* _file;
std::tr1::shared_ptr<int> _refcount;
};